How to find mutual arrays position of multiple matrices with different length
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
UNK
el 27 de Oct. de 2018
Comentada: UNK
el 27 de Oct. de 2018
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 comentarios
Respuesta aceptada
Walter Roberson
el 27 de Oct. de 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.
0 comentarios
Más respuestas (1)
madhan ravi
el 27 de Oct. de 2018
Editada: madhan ravi
el 27 de Oct. de 2018
>> b=find(ismember(A,B,'rows'))'
b =
2 7 10 11
>>
2 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!