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!