removing rows containing certain values
조회 수: 170 (최근 30일)
이전 댓글 표시
i have a 3X3 matrix and i want to delete rows containing values greater than a certain value and values less than another certain value, then store the deleted rows separately. These values lie on the second and third column. thank you
댓글 수: 0
답변 (2개)
Kirby Fears
2016년 3월 28일
편집: Kirby Fears
2016년 3월 28일
Seth,
You can create logical indexes with conditional statements, and use the & for "and" as well as | for "or" to combine conditions. The resulting logical index can be used for indexing. Here's an example:
m = magic(3);
idx = (m > 8) | (m < 3);
% using "find" to identify rows where logical idx is true
[delRows,~] = find(idx);
% remove duplicates
delRows = unique(delRows);
% store deleted rows
m_toDelete = m(delRows,:);
% delete rows
m(delRows,:) = [];
Hope this helps.
댓글 수: 1
Kirby Fears
2016년 3월 28일
편집: Kirby Fears
2016년 3월 28일
The method from Azzi's answer is more efficient:
m = magic(3);
idx = any((m > 8) | (m < 3),2);
% store deleted rows
m_toDelete = m(idx,:);
% delete rows
m(idx,:) = [];
Azzi Abdelmalek
2016년 3월 28일
편집: Azzi Abdelmalek
2016년 3월 28일
A=rand(3,3)
idx=any(A<0.1 | A>0.9,2)
out=A(idx,:)
A(idx,:)=[]
댓글 수: 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!