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

10 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

Voss
Voss am 22 Jul. 2022
Bearbeitet: Voss am 22 Jul. 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 Kommentare
Haley Royer
Haley Royer am 22 Jul. 2022
That works!! Thank you so much. You've no idea how much this has been frustrating me. Cheers!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by