行列A(n行3列)と行列B(m行3列)があります(n>m)。行列Bは行列Aに属する行列です。
ここで、行列Aから行列Bを除いた行列Cを求めたいのですが、どのようなコードでしょうか。
以下イメージです。
行列Aは点群データとして扱っており、処理によって検出した行列Bと検出されなかった
行列Cを別のデータとして処理したいので質問させて頂きます。
どうぞ宜しくお願い致します。

 採用された回答

michio
michio 2017 年 1 月 15 日

0 投票

ismember関数 が使えるかなと。
以下のサンプルコードを実行してみてください。
%サンプルデータ作成
% 点群 B,C
B = rand(5,3);
C = rand(5,3);
% 点群 A
A = [C; B];
% 点群 A の中から 点群 B を検出
index = ismember(A,B,'rows');
% B 以外、すなわち C を抽出
CfromA = A(~index,:);
% 確認
C
CfromA

2 件のコメント

Ichiro Suzuki
Ichiro Suzuki 2017 年 1 月 16 日
michio 様
ismember関数を知らずに無駄な繰り返し関数を使っていました。。。
C行列を抽出することができました。ありがとうございました。
michio
michio 2017 年 1 月 16 日
もし多少の誤差内のデータを抽出される場合には、 ismembertol 関数も便利ですよ。

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

その他の回答 (0 件)

カテゴリ

製品

質問済み:

2017 年 1 月 14 日

コメント済み:

2017 年 1 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by