我正在尝试遍历一组似乎显示周期性变化的样本。我需要不断地应用拟合函数来获得傅立叶级数系数,回归必须是过去的 n 个样本(在我的例子中,大约是 30)。问题是,我的代码非常慢!对一组 50,000 个样本执行此操作大约需要 1 小时。有没有办法优化这个?我究竟做错了什么?
这是我的代码:
function[coefnames,coef] = fourier_regression(vect_waves,n)
j = 1;
coef = zeros(length(vect_waves)-n,10);
for i=n+1:length(vect_waves)
take_fourier = vect_waves(i-n+1:i);
x = 1:n;
f = fit(x,take_fourier,'fourier4');
current_coef = coeffvalues(f);
coef(j,1:length(current_coef)) = current_coef;
j = j + 1;
end
coefnames = coeffnames(f);
end
当我打电话时,[coefnames,coef] = fourier_regression(VECTOR,30);
这需要永远计算。有什么办法可以解决吗?我的代码有什么问题?
注意:我有一个 intel i7 5500 U cpu,16GB RAM,并使用 Matlab 2015a。