2017-07-30 18 views
0

我有一個數組,它在一段時間內存儲信號的樣本,這段時間叫做signalArray(1:n)n是樣本數。我打算將信號採樣分成幾個時間段,例如, M段(0:n/M),(n/M+1:2n/M+1),....,我想在每個M段中找到最大信號值。MATLAB:在陣列數據的每個區間中查找最大值?

有沒有任何有效的方法呢?

+0

我們可以假設'M'除以'n'嗎? –

+0

@LuisMendo它可能發生,M不分裂n。 – VSB

+0

然後你的標誌沒有很好的定義。你只是想要一個最終的,更短的部分,你也計算最大? –

回答

2

如果M們放心劃分n你只需要將數據重新塑造成一個M行×矩陣,以trasnform每個段成一列,然後取最大值每列的。

一般來說,如果M不一定分爲n,則可以應用相同的過程,但最後一個分段(即列)可能需要填充NaN條目。這是有效的,因爲max忽略了NaN值。

n = 21;     % Data size 
M = 4;     % Number of segments. If M doesn't divide n, the last 
          % segment will be shorter (and will be padded by NaN) 
signalArray = rand(1,n); % Example data 
t = NaN(ceil(n/M), M); % Define matrix of NaN's with required size 
t(1:n) = signalArray;  % Fill data (in column-major order). Some entries 
          % in the last column may be left as NaN 
result = max(t, [] ,1); % Maximum of each column 
相關問題