2016-09-28 14 views
2

私は行列MR行とC*k列を持っている。私はFのつまりループのないmatlabのいくつかの列を見つける

F(:,j) = min(M(:,(j-1)*k+1:j*k),[],2) 

最初の列はMの最初k列の分になるよう、R行と列Cで別の行列Fを作成したいです。

Fの第2列は、k列の最小値でMのようになります。 私はここでF(i, :) = M(b, (j-1)*k+1:j*k)

が小さい例であるように、私は正しく、FMの形を変えることができない分を見つけ、R x C matrix.Butに再びそれを再構築MR*C x kに行列D行列を再構築しようとしています:

k=2; 
M = [1 2 3 4; 5 6 7 8; 9 10 11 12;]; 
then 
F = [1 3; 5 7; 9 11]; 

答えて

5

おそらくR x k x (C/k)行列にそれを変形し、次にminを2番目の次元に沿って計算し、次に結果を絞り込んで空の2番目の次元を削除するのが最も良い方法でしょう。

F = squeeze(min(reshape(M, size(M, 1), k, size(M, 2)/k), [], 2)) 
関連する問題