我想在MATLAB中並行化我的部分代碼。例如低於部分:在matlab中使用parfor
v1=[1,3,6,8];
ggx=5.*ones(15,14);
gax=ones(15,14);
parfor i = 1:length(v1)
m = v1(i);
if m > 1
gax(1:m-1,m-1) = ggx(1:m-1,m-1);
end
if m<nn
gax(m+1:end,m) = ggx(m+1:end,m);
end
end
但有一個錯誤: 錯誤:在PARFOR可變GAX不能成爲在MATLAB,「概述」循環classified.See並行。
有誰知道我該如何刪除錯誤?其他有用的信息是v1是一個遞增的向量,它不包含任何重複的元素。
你有沒有嘗試在'parfor'之前初始化'gax'和'gay'?在這種情況下,我也不認爲'parfor'會幫助優化你的代碼。你最好只使用常規的'for'循環。 – kedarps
是的,我在parfor之前給了他們價值。 @kedarps –
這似乎是一個切片變量索引問題,請參閱[這裏](https://www.mathworks.com/help/distcomp/troubleshoot-variables-in-parfor-loops.html)。 – kedarps