2017-07-30 9 views
0

私はsignalArray(1:n)nというサンプル数の時間の間に信号のサンプルを保存した配列を持っています。MATLAB:配列データの各区間で最大値を見つけるか?

私は信号サンプルをいくつかのタイムセグメントに分割します。 M個のセグメント(0:n/M),(n/M+1:2n/M+1),....と、これらのM個のセグメントのそれぞれにおいて信号の最大値を見出したいと思う。

効率的な方法はありますか?

+0

「M」は「n」を分割できますか? –

+0

@ LuisMendo Mがnを分割しないことがあります。 – VSB

+0

あなたのポプラムは明確に定義されていません。あなたは単に最大の計算もする最終的な短いセグメントを望んでいますか? –

答えて

2

Mを分割するために確保された場合nだけ列に各セグメントをtrasnformする、M行×行列にデータを再構築する必要があり、その後、各列の最大値を取ります。一般に

Mは必ずしもnを分割しない場合には、同様の手順を適用することができるが、最後のセグメント(すなわち、列)はNaNエントリでパディングする必要があるかもしれません。これは、maxNaNの値を無視するために機能します。

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 
関連する問題