Indexing with two matrices

7 visualizaciones (últimos 30 días)
Tchilabalo
Tchilabalo el 21 de En. de 2020
Comentada: Tchilabalo el 23 de En. de 2020
I have two matrices A(1000 by 100) and B(10 by 100).
A=
1 4 20
3 5 15
2 1 24
7 9 42
B=
3 4 15
7 1 42
I want to return a matrix C such that, for each column of B i find the indexes in the coresponding column in A.
For this case:
C=
2 1 2
4 3 4
I have tried the code below, but i am not getting what I want.
for i=1:size(A,2)
C(:,i)=intersect(A(i),B(i));
end

Respuesta aceptada

KALYAN ACHARJYA
KALYAN ACHARJYA el 21 de En. de 2020
Editada: KALYAN ACHARJYA el 21 de En. de 2020
A=[1 4 20
3 5 15
2 1 24
7 9 42];
B=[3 4 15
7 1 42];
[r1,c1]=size(B);
c=zeros(r1,c1);
for i=1:r1
for j=1:c1
r=find(B(i,j)==A(:,j))
c(i,j)=r
end
end
c
#
c =
2 1 2
4 3 4
  2 comentarios
Tchilabalo
Tchilabalo el 21 de En. de 2020
Thanks Kalyan for your answer. The code is working but i have on special case: what if i have one value repeated multiple times in a column? Here is an example:
A=[1 4 20
3 5 15
2 1 24
2 5 15
3 4 15
7 9 42];
B=[3 4 15
7 1 42];
[r1,c1]=size(B);
c=zeros(r1,c1);
KALYAN ACHARJYA
KALYAN ACHARJYA el 21 de En. de 2020
Editada: KALYAN ACHARJYA el 21 de En. de 2020
but i have on special case: what if i have one value repeated multiple times in a column
The logic, you have to find out, we are here to help you to implementation in MATLAB.

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 22 de En. de 2020
>> [C,~] = find(bsxfun(@eq,permute(A,[1,3,2]),permute(B,[3,1,2])));
>> C = reshape(C,size(B))
C =
2 1 2
4 3 4
  1 comentario
Tchilabalo
Tchilabalo el 23 de En. de 2020
Thanks Stephen for your answer. It is working now.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by