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

4 views (last 30 days)
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]?

Accepted Answer

Walter Roberson
Walter Roberson on 27 Oct 2018
[~, 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.

More Answers (1)

madhan ravi
madhan ravi on 27 Oct 2018
Edited: madhan ravi on 27 Oct 2018
>> b=find(ismember(A,B,'rows'))'
b =
2 7 10 11
>>

Tags

Community Treasure Hunt

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

Start Hunting!