2015-05-12 86 views
1

與此代碼:MATLAB parfor刪除值?

s=struct([]); 
for i=1:5 
s(i).m=i; 
s(i) 
end 

這一切都確定..如預期

ans = 
m: 1 
ans = 
m: 2 
ans = 
m: 3 
ans = 
m: 4 
ans = 
m: 5 

使用PARFOR而不訪問這樣 S =結構([])的輸出;

parfor i=1:5 
s(i).m=i; 
end 

看起來沒問題..沒有輸出,但在工作區中我有5個元素的結構的正確數組;但如果我嘗試訪問到的第i個元素中PARFOR環這樣

s=struct([]); 
parfor i=1:5 
    s(i).m=i; 
    s(i) 
end 

我有第4行

Index exceeds matrix dimensions. 

誤差和在工作空間中的S variabile的爲0x0尺寸。 這是爲什麼?

回答

2

試試這個..因爲你想更改PARFOR循環結構發生

s=struct([]); 
s(5).m = 0; 
parfor i=1:5 
    s(i).m=i; 
    s(i) 
end 

你的錯誤。所以每個核心都獨立地嘗試添加字段m。另一個問題是試圖在parfor循環中動態地延長s,這是一個禁忌。