2011-11-13 19 views
34

Actualmente comencé a trabajar con la octava para algunos análisis de datos y tengo algunos problemas para una manipulación de matriz específica.Seleccionar solo un número específico de filas que cumplan una condición

Suponga que tiene la siguiente matriz de datos:

 

    A = 

     1 11 22 33 
     44 13 12 33 
     1 14 33 44 

Ahora me gustaría eliminar todas las filas de esta matriz que no lograr, por ejemplo, la siguiente condición.

 

    octave:6> A(:, 4) == 33 
    ans = 

     1 
     1 
     0 

Y voy a conseguir la matriz de esta forma, que sólo selecciona estas filas:

 

    A_new = 

     1 11 22 33 
     44 13 12 33 

Sé que esto es posible con la ayuda de algunos bucles. ¿Pero hay una solución más limpia, por ej. mediante el uso de la biblioteca estándar proporcionada? Eso sería genial:]

Algunos pregunta similar también fue ya publicado para R: In R, select rows of a matrix that meet a condition

Respuesta

50

Probar:

A = [ 
    1 11 22 33 
    44 13 12 33 
    1 14 33 44 
]; 
idx = (A(:,4)==33); 
A_new = A(idx,:) 

Esto es usando logical indexing

+0

Eso es lo que estaba buscando. Gracias. – Ruun

+0

súper útil, gracias – Aerodyno

Cuestiones relacionadas