0
我有一個數組,它在一段時間內存儲信號的樣本,這段時間叫做signalArray(1:n)
和n
是樣本數。我打算將信號採樣分成幾個時間段,例如, M段(0:n/M)
,(n/M+1:2n/M+1)
,....
,我想在每個M段中找到最大信號值。MATLAB:在陣列數據的每個區間中查找最大值?
有沒有任何有效的方法呢?
我有一個數組,它在一段時間內存儲信號的樣本,這段時間叫做signalArray(1:n)
和n
是樣本數。我打算將信號採樣分成幾個時間段,例如, M段(0:n/M)
,(n/M+1:2n/M+1)
,....
,我想在每個M段中找到最大信號值。MATLAB:在陣列數據的每個區間中查找最大值?
有沒有任何有效的方法呢?
如果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
我們可以假設'M'除以'n'嗎? –
@LuisMendo它可能發生,M不分裂n。 – VSB
然後你的標誌沒有很好的定義。你只是想要一個最終的,更短的部分,你也計算最大? –