How to filter rows?
38 ビュー (過去 30 日間)
古いコメントを表示
I have a matrix like this
1 2 3 4 5 6 7 8
2 3 4 1 2 3 4 5
1 2 3 4 1 1 1 1
1 2 3 5 4 2 2 1
I want to separate those rows having first four entries as 1 2 3 4, as in above case I separate out row 1 and row three.
0 件のコメント
採用された回答
Aletta Wilbrink
2018 年 2 月 9 日
編集済み: Aletta Wilbrink
2018 年 2 月 9 日
Probably not the most efficient way, but this works
b = a(a(:,1)==1 & a(:,2) == 2 & a(:,3) == 3 & a(:,4) == 4,:)
Where a is the name of your matrix
2 件のコメント
Aletta Wilbrink
2018 年 2 月 9 日
編集済み: Aletta Wilbrink
2018 年 2 月 9 日
Seeing Guillaume's answer, a better way is
b = a(all(a(:,1:4) == [1 2 3 4],2),:)
その他の回答 (1 件)
Guillaume
2018 年 2 月 9 日
%R2016b or later:
tokeep = all(A(:, 1:4) == [1 2 3 4], 2)
%earlier versions
tokeep = all(bsxfun(@eq, A(:, 1:4), [1 2 3 4]), 2)
%then
A(tokeep, :)
4 件のコメント
Kurt
2023 年 2 月 22 日
The question is simply "How to filter rows?"
Anyway, I found the answer I needed. To filter rows of cells (not numerics) you can either read your data in as a table or convert your matrix to a table. Then use this one-liner:
output_data = input_data(table2array(input_data(:,col)) == "pattern",:);
where "col" is the column number you are filtering on.
There may be other approaches, but this works for me.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!