2017-08-18 392 views
0

Time Domain SignalMATLAB找到局部最大值在一定的範圍內

圖是我的時域信號,幷包含在黑色區域是我的感興趣的區域。

我想要做的是以下幾點:

  1. 確定全球最低點

  2. 找到全局最低點

我有之前出現最大值點成功確定了這樣一個全球最低點:

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.找到全局最低點之前出現最大值點?

在此先感謝

回答

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 

它會搜索本地最大值。要找到最小值,你可以反轉信號。僅在最小值之前的時間間隔內再次限制最大值搜索。

+0

是的,我的時間信號的尺寸爲450x450x200,其中200是我的時間範圍,450x450代表掃描區域 – Joonie

+0

我按照您的說法努力嘗試!非常感謝! – Joonie

+0

很高興我能幫到你 – Irreducible

相關問題