Matlab - Eliminacion de filas segun condicion

 
Vista:

Eliminacion de filas segun condicion

Publicado por Gonzalo Reyes (6 intervenciones) el 18/12/2019 20:02:12
Estimados
tengo el siguiente codigo:

1
2
3
4
5
6
max_I=max(ESP08,[],2);
Threshold3 = 600;
Threshold4=1.6e+04;
pos3=find(max_I<Threshold3);
pos4=find(max_I>Threshold4);
[a b]=size(ESP08);

y cuando lo ejecuto, me sale el siguiente error:

Matrix index is out of range for deletion.

Error in Analisis_Sonda (line 37)
ESP08(pos4,:)=[];

ayuda!
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminacion de filas segun condicion

Publicado por Daniel (354 intervenciones) el 19/12/2019 20:21:30
Hola,

¿Es posible que elimines los registros que cumplen pos3 y luego los de pos4? En tal caso se dará el fallo indicado cuando los registros que cumplen de pos4 se encuentren al final.

1
2
3
4
5
6
x = [1, 2, 3];
d1 = find(x < 2);
d2 = find(x > 2);
 
x(d1) = [];
x(d2) = [];

Si es este el caso te recomiendo eliminar primero los que cumplen una condición y luego comprobar la segunda. Ya que, además del fallo, no se eliminarán los valores deseados ya que una vez borrados los primeros la posición del resto cambia.

1
2
3
4
5
6
7
x = [1, 2, 3];
 
d1 = find(x < 2);
x(d1) = [];
 
d2 = find(x > 2);
x(d2) = [];

Aunque yo prefiero índices lógicos que son más rápidos y compactos. Todo lo anterior se puede resumir en:

1
x(x < 2 | x > 2) = [];

Saludos,
Daniel Rodríguez.
Analytics Lane
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