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

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

 採用された回答

michio
michio 2020 年 8 月 7 日

0 投票

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

3 件のコメント

kanako machii
kanako machii 2020 年 8 月 7 日
ご回答ありがとうございます。
ご教授頂いた内容でうまくいきました。
しかし、
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 2020 年 8 月 7 日
B は 1x1 のセル配列ですが、idx はこのケースですと 5x1 のベクトルだからですね。
B{1,1} = B{1,1}(~idx,:)
とすれば良いかと思いますが、いかがでしょうか。
kanako machii
kanako machii 2020 年 8 月 7 日
ありがとうございます。
解決致しました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!