フィルターのクリア

How to find mutual arrays position of multiple matrices with different length

1 回表示 (過去 30 日間)
UNK
UNK 2018 年 10 月 27 日
コメント済み: UNK 2018 年 10 月 27 日
I have two matrices and I want the corresponding all indices, not just the first one. Here is the example
A = ...
[2 2 4
4 5 4
1 1 4
4 3 2
1 2 4
2 4 4
1 4 1
1 1 1
5 3 3
4 3 5
4 5 4]
and
B = [ 1 4 1
4 3 5
4 5 4]
I used intersect as follows and got the following output:
[AB,ia,ib] = intersect(A,B,'rows')
AB =
1 4 1
4 3 5
4 5 4
ia =
7
10
2
ib =
1
2
3
is it possible to get ia = [7 10 2, 11]?

採用された回答

Walter Roberson
Walter Roberson 2018 年 10 月 27 日
[~, rowidx] = ismember(A,B,'rows');
locs = accumarray(rowidx+1, (1:length(rowidx)).', [], @(v) {v});
ia = locs(2:end);
This needs to be a cell array because there are multiple results for some values.

その他の回答 (1 件)

madhan ravi
madhan ravi 2018 年 10 月 27 日
編集済み: madhan ravi 2018 年 10 月 27 日
>> b=find(ismember(A,B,'rows'))'
b =
2 7 10 11
>>
  2 件のコメント
madhan ravi
madhan ravi 2018 年 10 月 27 日
use ismember() to get your desired result
UNK
UNK 2018 年 10 月 27 日
Thanks, but I wanted the corresponding indices for each row of B.

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

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by