3
我在MATLAB有一個for循環和其計算的正弦函數之和,如下所示:Matlab的:如何向量化的矢量功能
% preliminary constants, etc.
tTot = 2;
fS = 10000;dt = 1/fS; % total time, sampling rate
Npts = tTot * fS; %number of points
t = dt:dt:tTot;
c1 = 2*pi/tTot;
c2 = pi/fS;
s = zeros(1,Npts)
% loop to optimize:
for(k=1:Npts/2)
s = s + sin(c1*k*t - c2*k*(k-1))
end
基本上,一個班輪for循環變得NPTS變得很慢大。困難來自於我對k個參數k定義的向量求和。
有沒有辦法通過矢量化來提高效率?一種方法到目前爲止,我已經採取是定義一個矩陣,總結出來的結果,但是這給了我較大的向量的內存不足的錯誤:
[K,T] = meshgrid(1:1:Npts,t);
s = sum(sin(c1*K.*T - c2*K.*(K-1)),2);
任何幫助,將不勝感激。
尼斯,謝謝。這種方法仍然會出現內存錯誤,但我開始懷疑這是大型矢量化的問題。 – Orko 2015-04-02 19:46:36
@Orko是的,我認爲它是因爲你的系統內存不能一次處理這麼大的操作。 – Divakar 2015-04-02 19:52:37
@Orko Addee是一個修改後的版本,用於解決大型數據陣列的問題,請查看! – Divakar 2015-04-02 21:27:01