Matlab:如果信号在最后2秒内变为0.1,则计算值

时间:2013-03-04 11:18:40

标签: matlab

我有一个连续的信号上升和下降。我发现了peak-maxima值及其位置。

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

非常感谢。

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)