Creating a loop to search for matching values in two matrices
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
mcl1993
le 10 Août 2016
Commenté : Azzi Abdelmalek
le 10 Août 2016
I have two csv files. A is 55473 x 10 and B is 484 x 3. I want to create a loop that goes through column 5 in A, and when the value in the cell equals a value in column 1 in B, i want to multiply it by column 2 and column 3 of the same row in B. I want to repeat this for all values in column 5 of A.
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 10 Août 2016
You can do it without a for loop
[ii,jj]=ismember(A(:,5),B(:,1));
id=nonzeros(jj);
A(ii,5)=A(ii,5).*B(id,2).*B(id,3);
0 commentaires
Plus de réponses (1)
Azzi Abdelmalek
le 10 Août 2016
%-------Example-----------------
A=randi(10,55473,10);
B=randi(10,484,3);
%----------------------------------
for k=1:size(A,1)
idx= find(ismember(B(:,1),A(k,5)),1);
if ~isempty(idx);
A(k,5)=A(k,5)*B(idx,2)*B(idx,3);
end
end
2 commentaires
Voir également
Catégories
En savoir plus sur Logical 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!