Indexing with two matrices
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tchilabalo
le 21 Jan 2020
Commenté : Tchilabalo
le 23 Jan 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
0 commentaires
Réponse acceptée
KALYAN ACHARJYA
le 21 Jan 2020
Modifié(e) : KALYAN ACHARJYA
le 21 Jan 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 commentaires
KALYAN ACHARJYA
le 21 Jan 2020
Modifié(e) : KALYAN ACHARJYA
le 21 Jan 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.
Plus de réponses (1)
Stephen23
le 22 Jan 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
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!