我有一系列 2D 测量值(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