特定の値をもつ行を検索し、削除する方法

特定の値をもつ行を検索し、削除する方法を教えてください。
例えば
A =[0 0; 0 30; 50 70]; があったとき、1行目=0かつ2行目=0の行を消去し、
A'=[0 30; 50 70];としたいです。(Aの大きさはforループ内で毎回変わるため最初からは分からないものとしています)
宜しくお願いします。

 Accepted Answer

michio
michio on 7 Aug 2020

0 votes

A =[0 0; 0 30; 50 70];
idx = A(:,1) == 0 & A(:,2) == 0;
A1 = A(~idx,:)
A1 =
0 30
50 70
こんな感じでいかがでしょうか。

3 Comments

kanako machii
kanako machii on 7 Aug 2020
ご回答ありがとうございます。
ご教授頂いた内容でうまくいきました。
しかし、
A = [0 0; 0 0; 0 20; 30 50; 100 120];
B{1,1}=A;%(I,:);
idx = B{1,1}(:,1) == 0 & B{1,1}(:,2) == 0;
B{1,1} = B(~idx,:) %0の行を削除
このようにすると、「位置 1 の logical インデックスに、配列範囲外の true 値が含まれています。」
と出てしまうのですが、どこに問題があるのか教えて頂ければ幸いです。
michio
michio on 7 Aug 2020
B は 1x1 のセル配列ですが、idx はこのケースですと 5x1 のベクトルだからですね。
B{1,1} = B{1,1}(~idx,:)
とすれば良いかと思いますが、いかがでしょうか。
kanako machii
kanako machii on 7 Aug 2020
ありがとうございます。
解決致しました。

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!