MATLAB Answers

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

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

  0 Comments

Sign in to comment.

Accepted Answer

michio
michio on 7 Aug 2020
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)

Community Treasure Hunt

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

Start Hunting!