removing rows containing certain values
157 ビュー (過去 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!