我在Matlab的parfor循環中使用struct數組時遇到了問題。下面的代碼具有2個問題我不理解:在parfor中使用struct arrays
s=struct('a',{},'b',{});
if matlabpool('size')==0
matlabpool open local 2
end
for j = 1:2
parfor k=1:4
fprintf('[%d,%d]\n',k,j)
s(j,k).a = k;
s(j,k).b = j;
end
end
matlabpool close
- 它失敗並顯示錯誤
Error using parallel_function (line 589) Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
- 在輸出時,可變
s
是一個向量,而不是一個陣列(因爲它應該是,即使代碼在完成之前休息)。如果我初始化結構數組正確的尺寸,
編輯問題解決了:
s=struct('a',cell(2,4),'b',cell(2,4));
不過,我還是很樂意得到有關該問題的見解(例如是按照Oleg Komarov的建議召集一個bug)
對於第2點很複雜,你是什麼意思「陣列」,而不是「載體」?在Matlab中沒有區別。它看起來像's'應該是這個代碼末尾的'struct'的2x4矩陣。 – jazzbassrob
我認爲這實際上是一個錯誤,我建議提交一個[support equest](http://www.mathworks.it/support/service_requests/contact_support.do?)並且讓我們更新。 – Oleg
@jazzbassrob,一個向量是一個1xd數組(或dx1)。 –