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?

 Accepted Answer

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 Comments

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!

Sign in to comment.

More Answers (0)

Asked:

on 22 Jul 2022

Commented:

on 22 Jul 2022

Community Treasure Hunt

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

Start Hunting!