How to find mutual arrays position of multiple matrices with different length
1 回表示 (過去 30 日間)
古いコメントを表示
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]?
0 件のコメント
採用された回答
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.
0 件のコメント
その他の回答 (1 件)
madhan ravi
2018 年 10 月 27 日
編集済み: madhan ravi
2018 年 10 月 27 日
>> b=find(ismember(A,B,'rows'))'
b =
2 7 10 11
>>
2 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!