2011-06-09 19 views
-2

問候全部矢量化for循環,做一筆總金額

我該如何矢量化這個for循環?

t_rebuilt=linspace(0,1,length(inner_freq)); 

for ii=1:1:length(inner_freq)-1;ii=ii+1; 

    aa_sig_rebuilt=inner_freq(ii,2)*cos(2*pi*t_rebuilt*inner_freq(ii,1)+inner_freq(ii,3)); 
    aa_sig_combined=aa_sig_combined+aa_sig_rebuilt; 

end; 

我試圖與線替換它下面,看看它的工作,但我只是得到一個直線

aa_sig_rebuilt=inner_freq(ii,2).*cos(2*pi*t_rebuilt*inner_freq(ii,1)+inner_freq(ii,3));

回答

1

看來,t_rebuilt是一個1乘N的時間點向量,您要在其中計算一組三角函數,並使用在M乘3矩陣的行中定義的參數inner_freq。然後,您想要將所有這些結果添加到單個組合信號中。

temp = 2*pi*inner_freq(:,1)*t_rebuilt; %# This matrix multiplication will 
             %# result in an M-by-N matrix 
temp = temp+repmat(inner_freq(:,3),1,numel(t_rebuilt)); %# Replicate and add 
                 %# column 3 
aa_sig_combined = inner_freq(:,2).'*cos(temp); %'# Gives you your 1-by-N 
               %# combined signal 

然後可以繪製結果如下::可以爲循環如下做到這一點沒有一個

plot(t_rebuilt,aa_sig_combined); 
+0

它完美謝謝! – 2011-06-09 19:51:57

0

試試這個

sum(aa_sig_rebuilt=inner_freq(:,2).*cos(2*pi*t_rebuilt*inner_freq(:,1)+inner_freq(:,3))); 
+0

t_rebuilt = linspace(0,1,長度(inner_freq));所以這是另一個陣列我繪製它和情節回來,作爲一條直線 – 2011-06-09 17:30:13