我已經寫在Matlab一個函數,這是計算的成本函數的數組:誤差與在Matlab「PARFOR」
function [F1val, Com]=F1(Community,NeighMat)
global FlattedAdjMat;
Com=zeros(numel(Community),3);
Com(:,1)=Community'; % The First row of Com= Community's Nodes
% Calculating INTERNAL Edges of Community
for j=1:numel(Com(:,1))
Com(j,2)=sum(FlattedAdjMat((Community),Com(j,1)));% Internal Degrees of Node j
end
F1val=(nansum(Com(:,3)./((Com(:,2)+Com(:,3)))));
end
但是我有2個問題與線Com(j,2)=sum(FlattedAdjMat((Community),Com(j,1)))
,
當我嘗試並行執行它使用
parfor
:parfor iii=1:5 [z,p]=F1(Community,NeighMat) end
此錯誤OCC Urs在線:
Index exceeds matrix dimensions
而在正常情況下(不是並行)沒有問題- 這是非常耗時並且減慢速度。
NeighMat
是加權鄰接矩陣, Community
是矩陣索引的陣列, FlattedAdjMat
是鄰接矩陣。
請問你能幫我嗎?
樣本數據:
for ii=1:10
NeighMat{ii}=randi(10,1,10)
end
Community=[1,5,6,8,9];`
global FlattedAdjMat
FlattedAdjMat=randi([0,1],10,10)
IIUC,你應該已經改變了'對於j = 1:numel(COM(:,1))'到'parfor j = 1:numel(Com(:,1))' –
@SardarUsama,我想並行執行函數'F1'。不只是該函數的一個循環。 –
運行五次的目的是什麼?如果你保持所有迭代的輸入參數相同? –