在MATLAB中删除任何具有相同值的列

时间:2011-06-23 16:58:55

标签: matlab equals

我需要删除矩阵中具有相同值的任何列。我在MATLAB中使用for循环设计它。我想知道使用矢量化是否存在更好/更快的方式。

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) = [] ;

谢谢!

1 个答案:

答案 0 :(得分:4)

这是一个简单的单行使用函数DIFFANY

mat = mat(:,any(diff(mat,1)));