我有一个连续的信号上升和下降。我找到了峰值 - 最大值及其位置。
我现在想知道如何将代码写入 COUNT 以防我的信号以这种规则发生变化:它的幅度超过 0.1 并且峰值出现在增加开始后不到两秒的时间内。
非常感谢。
我有一个连续的信号上升和下降。我找到了峰值 - 最大值及其位置。
我现在想知道如何将代码写入 COUNT 以防我的信号以这种规则发生变化:它的幅度超过 0.1 并且峰值出现在增加开始后不到两秒的时间内。
非常感谢。
一个普遍的答案是:遍历峰值向量并检查值向量的适当部分以查找其最小元素:
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)