0

我有一个连续的信号上升和下降。我找到了峰值 - 最大值及其位置。

我现在想知道如何将代码写入 COUNT 以防我的信号以这种规则发生变化:它的幅度超过 0.1 并且峰值出现在增加开始后不到两秒的时间内。

非常感谢。

4

1 回答 1

0

一个普遍的答案是:遍历峰值向量并检查值向量的适当部分以查找其最小元素:

for i = 1:len(peaks)
    peak = peaks(i,:)
    peak_value = peak[1]
    peak_time = peak[2]
    cut_values = values(max(1,(peak_time-2)*f):peak_time*f)
    if min(cut_values) < peak_value - 0.1
            peak_count += 1 % or something

编辑 - 添加说明:

peaks是峰值和时间的矩阵 (nx2)

values是你的信号向量

f是采样频率 (Hz),被认为是均匀的

再次编辑以适应 2 秒之前的峰值。

Matlab 的 1 索引在这里有点棘手:样本 1 在时间 0,样本 2 在时间f。因此,对于从零时间开始的信号,真正正确的做法是:

    cut_values = values(max(0,(peak_time-2)*f)+1:peak_time*f+1)
于 2013-03-04T14:02:59.973 回答