(列) ベクトルの特定の固定サイズのサブセットを平均化する関数を作成しようとしています。
ベクトルを所定のサイズのチャンクに再形成し、各行で平均関数を使用してそれを行っています。
例えば
A = rand(10,1)
B = reshape(A,[],2)
A = mean(B,2)
ただし、ベクトルがチャンクのサイズで割り切れない場合、reshape はエラーを吐き出します。元のデータの残りを破棄するように、どうすればそれを説明できますか?
(列) ベクトルの特定の固定サイズのサブセットを平均化する関数を作成しようとしています。
ベクトルを所定のサイズのチャンクに再形成し、各行で平均関数を使用してそれを行っています。
例えば
A = rand(10,1)
B = reshape(A,[],2)
A = mean(B,2)
ただし、ベクトルがチャンクのサイズで割り切れない場合、reshape はエラーを吐き出します。元のデータの残りを破棄するように、どうすればそれを説明できますか?
とを使用try
しcatch
てこれを処理できます。次に、その部分で、残りのチャンクの平均を保存catch
する要素を無視または追加できます。A
Matlab のドキュメントには、これらのことを行う方法の良い例があります。その例を次に示します。
A=randi(10,11,1);
chunk_size=4;
try
B = reshape(A,chunk_size,[]);
catch err
if (strcmp(err.identifier,'MATLAB:getReshapeDims:notDivisible'))
A2=A;
A2(end+1:chunk_size*ceil(size(A,1)/chunk_size )) = mean( A(chunk_size*floor(size(A,1)/chunk_size )+1:end));
B = reshape(A2,4,[]);
C=mean(B,1);
end
end
最初 にデバッグ用に追加A2
しました...A
A=rand(10,1)
chunkSize = 2
C = chunkSize *floor(size(A,1)/chunkSize ) %// Find the biggest subset that will be divisible by chunkSize
M=mean(reshape(A(1:C), chunkSize, [])) %// Use reshape as you did but leaving off the extra end bits
M = [M, mean(A(C+1:end))] %// then find the mean of the extra end bits