2016-08-02 8 views
2

私はMATLABに巨大な行列を持っています。現在、一部の行にはゼロのみが含まれています。ゼロのみを含む行を見つけよう

find機能を使用して、のみを含む行をすべて見つけることができますか?ゼロ?

+0

あなたはどの言語を使用していますか? – Mureinik

+0

Matlab。それを追加するのを忘れました。ありがとう。 – henry

答えて

3

anyを使用すると、ゼロ以外の行を見つけて結果を否定できます。 2番目の入力を使用して、列全体(2番目の次元)に操作を適用することを指定します。あなたの代わりに論理配列のインデックスをしたい場合は

row_has_all_zeros = ~any(data, 2) 

、単に結果にfindを適用する:あなたは、あなたがより多くの速度を得ることができます必要がある場合は最初に見ることで(データセットによって異なります)

indices = find(row_has_all_zeros); 
+0

大変ありがとうございます! – henry

0

部分ゼロ行(この例では長さ10)および行の選択によりさらに計算する。

row_has_first10_zeros = sum(data(:,1:10),2); 
row_has_all_zeros = sum(data(~rows,:),2); 

indices = find(~row_has_first10_zeros) 
indices = indices(~row_has_all_zeros) 
0

n = length(matrix);

この行は、あなたの行列の行数を与えます。

ids = setdiff(1:n,find(sum(matrix,2)));

IDSはあなたにゼロのみが含まれている行番号(インデックス)を提供します。

関連する問題