我有一个连续的信号上升和下降。我发现了peak-maxima值及其位置。
我现在想知道如何将代码编写到COUNT以防我的信号在这种规则中发生变化:它的幅度超过0.1,峰值在增加开始后不到两秒就出现了。
非常感谢。
答案 0 :(得分: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),被认为是统一的
再次编辑以在2s之前容纳峰值。
Matlab的1索引在这里有点棘手:样本1在时间0,样本2在时间f
。因此,对于从零时间开始的信号,真正正确的做法是:
cut_values = values(max(0,(peak_time-2)*f)+1:peak_time*f+1)