我有一系列二维测量结果(x轴上的时间),绘制成非光滑(但非常好)的锯齿波。在理想的世界中,数据点会形成完美的锯齿波(在任一端都有部分振幅数据点)。有没有使用OCTAVE/MATLAB来计算波的(平均)周期的方法?我尝试使用公式维基百科(Sawtooth_wave)锯齿:测量锯齿的周期
P = mean(time.*pi./acot(tan(y./4))), -pi < y < +pi
也试过:
P = mean(abs(time.*pi./acot(tan(y./4))))
,但它没有工作,或至少它给了我,我知道的答案了。
绘制数据的一个例子:
我也尝试下面的方法 - 应该工作 - 但它不给我我所知道的是接近正确的答案。可能是我的代码简单和错误。什么?
slopes = diff(y)./diff(x); % form vector of slopes for each two adjacent points
for n = 1:length(diff(y)) % delete slope of any two points that form the 'cliff'
if abs(diff(y(n,1))) > pi
slopes(n,:) = [];
end
end
P = median((2*pi)./slopes); % Amplitude is 2*pi
计数过零点? –
理论上是的,但y中的度量通常不是那么精确。 – user46655
从来没有为X轴 – user46655