Matlab - como eliminar columna repetida de una matriz m x n

 
Vista:

como eliminar columna repetida de una matriz m x n

Publicado por Tatan (1 intervención) el 09/11/2015 22:06:17
estoy trabajando con fitgmdist, para obtener un ajuste de Gaussianas en 3ra dimension, sin embargo tengo mi matriz Linealmente dependiente y para poder utilizar un metodo de clasificación pca, me pide eliminar columnas repetidas, ya que mi matriz es de 3000 x 3000 y es demasiado grande, lo he intentado con el comando unique, pero no entiendo bien que me da como resultado. Les agradeceria mucho su ayuda, ya que llevo atorada varias semanas, muchas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar columna repetida de una matriz m x n

Publicado por Royeth (1818 intervenciones) el 10/11/2015 00:46:44
Con Unique puedes hacerlo de la siguiente forma por ejemplo

1
2
3
A=[1 2 3 4 3 1 2
   4 6 7 9 7 4 8];
B=unique(A','rows')';


y te queda

1 2 2 3 4
4 6 8 7 9


también hice este algoritmo y lo probé con esta matriz y funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A=[1 2 3 4 3 1 2
   4 6 7 9 7 4 8];
k=1;
while k<size(A,2)
l=k+1;
while l<=size(A,2)
if isequal(A(:,k),A(:,l))
    A(:,l)=[];
else
    l=l+1;
end
end
k=k+1;
end
disp(A)


ejecución

1 2 3 4 2
4 6 7 9 8


lo puedes pasar a tipo función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function A=filtro(A)
k=1;
while k<size(A,2)
l=k+1;
while l<=size(A,2)
if isequal(A(:,k),A(:,l))
    A(:,l)=[];
else
    l=l+1;
end
end
k=k+1;
end
end


saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar