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

特定の値をもつ行を検索し、削除する方法を教えてください。
例えば
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 Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

질문:

2020년 8월 7일

댓글:

2020년 8월 7일

Community Treasure Hunt

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

Start Hunting!