Delete the row of matrix
조회 수: 2 (최근 30일)
이전 댓글 표시
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
채택된 답변
Guillaume
2015년 2월 9일
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
Guillaume
2015년 2월 9일
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, :) = [];
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!