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