我得到以下錯誤:「在PARFOR變量X_bs不能 分類」試圖運行以下PARFOR循環時:Matlab的:PARFOR環和電池陣列工作不
y = zeros(1000,1)
parfor bb = 1:1000
rng(bb)
% deleted line: X_bs{8} = [];
for ii = 1:8
ind = ceil(N(ii)*rand(N(ii),1));
X_bs{ii} = X{ii}(ind,:);
end
y(bb) = another_function(X_bs)
end
X
是1×8單元陣列,每個單元包含一個N(ii)x4
矩陣(N(ii)
變化)。該代碼重新對X
的行進行採樣,並創建一個稱爲X_bs
的單元陣列。我通過一個輸出我感興趣的變量的函數X_bs
,y(bb)
。
爲什麼我會收到此錯誤?我如何解決這個問題?
下面是一個例子:
X{1} = [1 ; 2 ; 3]
X{2} = [4 ; 5 ; 6; 7]
N(1) = 3 % size of X{1}
N(2) = 4 % size of X{2}
parfor bb=1:10
rng(bb)
for ii = 1:2
X_bs{ii} = zeros(N(ii),1);
ind = ceil(N(ii)*rand(N(ii),1));
X_bs{ii} = X{ii}(ind,:);
end
% Output is a function of X_bs. For illustration, say it is the sum
y(bb) = sum(X_bs{1}) + sum(X_bs{2});
end
上面的代碼得到相同的錯誤如前面:「在PARFOR可變X_bs不能被分類」。這裏是一個,它工作,不使用細胞結構簡單的版本:
X = [1 ; 2 ; 3]
N = 3; %size of X
parfor bb=1:10
rng(bb)
X_bs = zeros(N,1);
ind = ceil(N*rand(N,1));
X_bs= X(ind,:);
y(bb) = sum(X_bs)
end
的問題(我認爲)位於內覆蓋細胞結構。也許parfor將細胞結構視爲切片變量而不是臨時變量。有什麼想法嗎?
更新:Adriaan提出,隨機向量ind
和單元格結構X_bs{ii}
存在問題。這裏要說的是不調用所述隨機矢量IND一個簡單的例子,並且仍然具有相同的錯誤:
X{1} = [1 ; 2 ; 3]
X{2} = [4 ; 5 ; 6; 7]
N(1) = 3 % size of X{1}
N(2) = 4 % size of X{2}
parfor bb=1:10
for ii = 1:2
X_bs{ii} = X{ii};
end
% Output is a function of X_bs. For illustration, say it is the sum
y(bb) = sum(X_bs{1}) + sum(X_bs{2});
end
因此,我相當肯定MATLAB是未治療的細胞結構,X_bs{ii}
,作爲臨時變量。
我編輯並將shares_bs更改爲X_bs以避免混淆。 X_bs應該是一個臨時變量。刪除行X_bs {8} = [];後仍然出現錯誤。 –