2014-10-02 73 views
0

我通常用parfor代替MATLAB代碼中的for,但所有2維矩陣都不起作用。MATLAB如何在parfor循環中輸出矩陣?

代碼

parfor k=1 : n 
sonic = data1((1+(k-1)*2400):(2400*k)); 
signal1 = (sonic(1:2400))./100; 
Ar = abs(fftshift(fft(signal1,2400))); 
[maxb,ind] = max(b); 
Tp(k) = 2*pi/x(ind); 
E = @(x)(x^2+1); 
for i=1:length(x2) 
    Ex(i,k) = E(x2(i)); 
    Exm0(i,k) = Ex(i,k)-m0(k); 
    signal2(i) = Exm0(i,k); 
end 
epsilong(:,k) = Ar; 
end 

只有變量如Tp(k)顯示在工作區;象Ex(i,k)這樣的二維矩陣不起作用。

回答

0

嵌套在PARFOR循環中的FOR循環的限制被描述here - 我認爲這種情況下的問題是你的循環邊界1:length(x2)。正如該頁面所述,您應該可以像這樣解決此問題:

len_x2 = length(x2); 
parfor k = 1:n 
    ... 
    for i = 1:len_x2 
     ... 
    end 
end 
+0

感謝您的幫助!關於循環邊界,PARFOR的matlab文檔被描述[鏈接](http://www.mathworks.cn/cn/help/distcomp/parfor.html),其提供了作爲parfor i = 1的示例:長度(A ) B(i)= f(A(i)); 結束。爲了解決矩陣問題,我想我應該在循環外定義一個矩陣。但問題是如何從循環中傳遞變量。 – Garbiel 2014-10-03 04:31:21