2011-06-23 26 views
4

同じ値を持つ行列の列を削除する必要があります。 MATLABのfor-loopを使って設計しました。ベクトル化を使ってより良い/より速い方法が存在するかどうかを知りたかったのです。MATLABの同じ値の列を削除してください

mat = [ 0.56 0.2 1 0 45; 0.566 0.2 4 0 45; 0.52 0.2 6 0 45; 0.56 0.2 6 0 41 ]; 
[row col] = size(mat) ; 

bitmat = true(1,col) ; 
for i = 2:row, tf = (mat(i-1,:) == mat(i,:)) ; bitmat = bitmat & tf ; end 
mat(:,bitmat) = [] ; 

ありがとうございます!ここで

答えて

4

は機能DIFFANYを使用して、簡単なワンライナーです:

mat = mat(:,any(diff(mat,1))); 
関連する問題