Delete the row of matrix
2 views (last 30 days)
Show older comments
I want to delete multiple rows of matrix.
For example,
Matrix A contains X in the first column, and Y in the second column. Note that X and Y does not have to be a whole number .
A = [ 1.122 2.111; 1.122 2.3, etc,....]
If X values are in the interval of [1.12 -1.125] and Y values are in the interval of [2.12-2.3], then delete this row.If X is in the range but Y is not, then dont delete them. Note that I have to search the matrix A to find whether X and Y in the interval that I defined, and then delete them. From the example above, the second row needs to delete by looking at it. But I need to search them for the huge matrix which I cant use eye to find them. I need you guys helps.
Thanks.
2 Comments
Accepted Answer
Guillaume
on 9 Feb 2015
A(A(:, 1) >= 1.12 & A(:, 1) <= -1.125 & A(:, 2) >= 2.12 & A(:, 2) <= -2.3, :) = []
% A(:, 1) is your X, A(:, 2) is your Y
% A(:, 1) >= 1.12 & A(:, 1) <= -1.125 is all the rows of A for X in [1.12 -1.125] (1)
% A(:, 2) >= 2.12 & A(:, 2) <= -2.3 is all the rows of A for Y in [2.12 -2.3] (2)
% (1) & (2) is X in [1.12 -1.125] AND Y in [2.12 -2.3]
% A(condition, :) = [] remove all the rows of A that fulfill the condition
2 Comments
Guillaume
on 9 Feb 2015
You seem to be a bit confused about array indexing. In
A(rx, ry)
ry is the columns of A. You've only got two columns.
If you wanted to use your method, you'd have to do:
rx=find(A(:, 1) >= 1.12 & A(:, 1) <= -1.125);
ry=find(A(:, 2) >= 2.12 & A(:, 2) <= -2.3);
A(intersect(rx, ry), :) = [];
It's a lot more work though than:
logicalx = A(:, 1) >= 1.12 & A(:, 1) <= -1.125;
logicaly = A(:, 2) >= 2.12 & A(:, 2) <= -2.3;
A(logicalx & logicaly, :) = [];
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!