Matlab - eliminar filas de una matriz si cumplen una cierta condicion

 
Vista:
sin imagen de perfil

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por sonia (6 intervenciones) el 27/11/2013 04:23:27
Hola,

esta es mi primera pregunta en el foro, siempre busco otras parecidas para resolver la mia, xo mi problema no lo encontre. necesito ayuda!!

Tengo una matriz como esta pero con muchisimasss filas mas:

104,206 99,557 96,667 1 33 1 120,993 0
104,708 99,189 96,641 6 14 1 123,989 65536
107,099 102,732 98,641 0 46 1 118,899 131072
104,985 101,174 98,251 5 30 2 118,445 196608
108,86 103,355 103,494 0 21 1 118,423 262144

Lo que necesito es un bucle para borrar todas las filas en las que en la 4ª columna aparezca un 0.

Así, necesito que lo haga con todas las filas y que el resultado sea así:

104,206 99,557 96,667 1 33 1 120,993 0
104,708 99,189 96,641 6 14 1 123,989 65536
104,985 101,174 98,251 5 30 2 118,445 196608

Ojala podaís ayudarme!!!
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 Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por Jorge De Los Santos (213 intervenciones) el 27/11/2013 06:45:32
Hola Sonia...

Una manera de hacerlo sería la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear all;clc;
M=[3.2 1.1 4.5 1 2.8 3.2;
   1.8 2.2 5.1 0 3.4 4.1;
   2.1 1.5 4.1 0 3.3 3.9;
   2.4 1.7 4.3 3 3.2 1.1;
   2.2 2.4 3.9 2 3.9 2.5];
i=1;
while 1
    if M(i,4)==0
        M(i,:)=[];
    else
        i=i+1;
    end
    if i>size(M,1)
        break;
    end
end

Saludos.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 27/11/2013 10:33:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>> A=[104206 99557 96667 1 33 1 120993 0
 104708 99189 96641 6 14 1 123989 65536
 107099 102732 98641 0 46 1 118899 131072
 104985 101174 98251 5 30 2 118445 196608
 10886 103355 103494 0 21 1 118423 262144]
A((A(:,4)==0),:)=[]
 
A =
 
      104206       99557       96667           1          33           1      120993           0
      104708       99189       96641           6          14           1      123989       65536
      107099      102732       98641           0          46           1      118899      131072
      104985      101174       98251           5          30           2      118445      196608
       10886      103355      103494           0          21           1      118423      262144
 
 
A =
 
      104206       99557       96667           1          33           1      120993           0
      104708       99189       96641           6          14           1      123989       65536
      104985      101174       98251           5          30           2      118445      196608


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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
sin imagen de perfil

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por sonia (6 intervenciones) el 27/11/2013 19:18:20
graciassss me funciono a la maravilla!!
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

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por BUDDY (5 intervenciones) el 18/10/2015 00:11:04
hola tengo una consulta parecida
Tengo un archivo con coordenadas
SVA=[5850295,60458200 735251,205917000
5850299,08892000 735246,431921000
5850280,42282000 0
5850283,99766100 735177,763299000
5850221,17775100 734965,229955000
0 734967,447261000
5850146,82162500 734968,963175000
5850066,39618800 734972,204289000
5850058,56773900 734980,666254000
5850058,09260200 0
5850034,58462900 735006,685666000
5849988,28421700 735004,850166000
5849857,90363100 735034,739965000
5849848,76289800 735049,933039000
5849850,79920000 735050,838062000
5849923,31417000 735211,027137000
5849926,11974100 735224,715610000
5849953,94071500 735342,767379000
5850126,71102400 735316,992606000
5850127,20878600 735319,775552000
5850061,02897800 735230,285744000
5850006,32033600 735167,827843000
0 735150,892600000
5850101,09887200 735128,538531000
5850154,32695300 735135,150855000
5850214,18291300 735121,589651000
5850305,59589400 735278,577207000
5850309,26123800 0
5850237,13090300 735293,068888000
5850237,76441900 735295,964962000
5850208,98468700 735122,681335000
5850221,97176700 735120,034143000
5850232,99042200 735185,150549000
5850226,33850300 735186,734340000
5850223,62343400 735187,232102000
5850237,78704400 735207,911878000
5850231,72339000 735209,224162000
5850228,42005600 735210,038682000
5850198,78055200 735216,334249000
5850158,86903700 735225,203474000]

quisiera eliminar las filas que contengan cero, deberia quedar un archivo de 35x2

De antemano gracias
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
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

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por Royeth (1818 intervenciones) el 18/10/2015 20:47:35
como son dos columnas entonces puedes hacer esto :

1
2
SVA(SVA(:,1)==0,:)=[];
SVA(SVA(:,2)==0,:)=[];



si son varias columnas en algún otro caso entonces puede ser un ciclo :

1
2
3
for k=1:size(SVA,2)
SVA(SVA(:,k)==0,:)=[];
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

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por BUDDY (5 intervenciones) el 19/10/2015 02:15:40
Muchas gracias por la ayuda, me funciono correctamente
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

eliminar filas de una matriz si cumplen una cierta condicion

Publicado por Fernando (1 intervención) el 25/07/2016 23:06:05
Muchas gracias. Me sirvio mucho.
Saludos.
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