Trying to delete rows in a table based on specific values using indexing

I have a variable with 3 columns and 343127 rows. I'm trying to delete rows based on values in the 3rd column using the following method that I got from another question in the community here:
idx = any(PARTidMat<738341.7917 | PARTidMat>738342,3);
out = PARTidMat(idx,:);
PARTidMat(idx,:) = [];
PARTidMat is the variable I'm trying to delete rows from. Rows containing 738341.7917 - 738342 in column 3 are the rows I'm trying to delete. I don't have any issues running line 1. It produces a logical variable with the same dimensions as my PARTidMat variable. Columns 1 and 2 all have logical values of 1 and column 3 has 0 values where the values meet the parameters set in the idx line of code (I checked this in excel).
When I run line 2, I get the following error:
The logical indices in position 1 contain a true value outside of the array bounds.
When I run the 3rd line, I get the following error (maybe because line 2 doesn't work, but maybe for a different reason?):
Matrix index is out of range for deletion.
I'm not sure what I'm doing wrong here. Can anyone help me out?

 Respuesta aceptada

Voss
Voss el 22 de Jul. de 2022
Editada: Voss el 22 de Jul. de 2022
Instead of this:
idx = any(PARTidMat<738341.7917 | PARTidMat>738342,3); % any along the 3rd dimension
Do this:
idx = PARTidMat(:,3) < 738341.7917 | PARTidMat(:,3) > 738342; % those in the 3rd column

4 comentarios

That doesn't seem to work for me. The IDX variable that is produced is only 1 value and only deletes one row in the PARTidMat variable when I try to run the 3rd line of code. There should be about 4000 rows deleted based on the given parameters.
Sorry, I had a mistake in my answer. It is corrected now.
You don't need to use any at all, just create a logical index, as shown (now).
That works!! Thank you so much. You've no idea how much this has been frustrating me. Cheers!
I'm glad it's working now!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 22 de Jul. de 2022

Comentada:

el 22 de Jul. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by