我有一组数据是周期性的(但不是正弦曲线)。我在一个矢量中有一组时间值,而在第二个矢量中有一组幅度。我想快速估计函数的周期。有什么建议么?什么是使用Octave来近似数据周期的最快方法?
具体来说,这是我现在的代码。我想用向量t近似向量x(:,2)的周期。最终,我想要做很多初始条件,并计算每个周期并绘制结果。
function xdot = f (x,t)
xdot(1) =x(2);
xdot(2) =-sin(x(1));
endfunction
x0=[1;1.75]; #eventually, I'd like to try lots of values for x0(2)
t = linspace (0, 50, 200);
x = lsode ("f", x0, t)
plot(x(:,1),x(:,2));
谢谢!
约翰
对于确定一般周期性,FFT不适用。例如,如果信号是两个分量的总和,一个周期为5T,另一个周期为7T,则信号周期为35T,但这不会在FFT中显示。自相关是这项任务的更好选择。 – tom10 2010-04-04 23:43:32
@ tom10 - FFT方法取决于在观测中有几个周期的信号,但我认为这对任何非分析方法都是正确的,不是吗? – mtrw 2010-04-04 23:58:27
样本长度不在我在这里讨论的内容(尽管你对此是正确的)。尝试绘制sin(t/2)+ sin(t/3)并观察周期性,然后将其与FFT进行比较,您可以看到周期和FFT没有如此明显的相关性。 – tom10 2010-04-05 00:18:21