イントロ
行列から、特定の数字を含む行の
全てを取得する方法を調べたので報告します。
How to check if a number is in an array?
事例
下記のような行列から、
1 10 2 4 5
... ... ... ... ...
... ... ... ... ...
1 10 2 4 5
1 10 2 4 5
3 11 14 0 9
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
3 11 14 0 9
3 11 14 0 9
下記のようなものだけ取得したい。
3 11 14 0 9
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
3 11 14 0 9
3 11 14 0 9
サンプルコード
grep_matrix.m
a = [1 10 2 4 5];
b = [3 11 14 0 9];
Mat = [repmat(a, 107, 1); repmat(b, 16, 1)];
Mat(any(b(1) == Mat, 2), :);
解説
サンプルコードを走らせるとわかりますが、
事例をみたす実装ができています。
特定の数字を含む行Vectorを探して
1/0を返すany関数を使って、行列について
Mat(any, :)と書くことで目的は達成されました。