MATLAB在一定范围内找到局部最大值

时间:2017-08-18 02:45:31

标签: matlab max

Time Domain Signal

上图是我的时域信号,黑色区域是我感兴趣的区域。

我想要做的是:

  1. 确定全球最低点

  2. 查找全局最小点之前的局部最大点

  3. 我已经成功确定了这样一个全球最低点:

        for ii=1:Size(1)
            for jj=1:Size(2)
                [min_amp, min_index]=min(signal(ii,jj,:));
                min_time(ii,jj)=time(min_index);
            end
        end
    
        Minbound = floor(mean(min_time(:))*Fs);
    

    尺寸(1)和尺寸(2)代表扫描区域,我试图找到每个点发生全局最小值并取平均值的时间。

    任何人都可以帮助我

    2. 查找全球最低点之前的本地最高点?

    提前致谢

1 个答案:

答案 0 :(得分:2)

目前尚不清楚您的可变信号(3D)是如何定向的。 我将假设第三个维度是时间,否则搜索最小值将没有任何意义。

确定最低

[min_amp, min_index]=min(signal(ii,jj,:));

你有索引(min_index)所在的位置,现在你必须将搜索限制在此之前(因为它必须在此之前)。

[max_amp, max_index]=max(signal(ii,jj,start_index:min_index));

如前所述,我不知道您的信号的大小,无论是黑框区域的纪元还是整个时间序列。取决于start_index可以是1或黑框历元的起始索引。

您应该考虑检查最大值是真正的峰值还是仅是间隔开始时的最大值。

查看内置函数

findpeaks

它搜索局部最大值。要找到最小值,您可以反转信号。并且仅在最小值之前的间隔再次限制最大值搜索。