【发布时间】:2017-03-21 15:26:58
【问题描述】:
我有一系列 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
【问题讨论】:
-
计算过零次数?
-
理论上是的,但是 y 中的度量通常没有那么精确。
-
永远不会在 x 轴上
-
我认为这可能与询问如何计算锯齿的平均斜率相同。
-
如果您知道锯齿的连续部分的平均斜率并知道幅度,您可以从中得出它,正如您所说。
标签: matlab octave period measures