Удалить любой столбец с такими же значениями в MATLAB - PullRequest
4 голосов
/ 23 июня 2011

Мне нужно удалить любой столбец в матрице, который имеет те же значения в нем. Я разработал его, используя цикл for в 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) = [] ;

Спасибо! * * 1004

1 Ответ

4 голосов
/ 23 июня 2011

Вот простой однострочник, использующий функции DIFF и ANY :

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