Effacer les filtres
Effacer les filtres

Creating a loop to search for matching values in two matrices

5 vues (au cours des 30 derniers jours)
mcl1993
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.

Réponse acceptée

Azzi Abdelmalek
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);

Plus de réponses (1)

Azzi Abdelmalek
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
mcl1993
mcl1993 le 10 Août 2016
Thanks, can you explain what the line idx = find(ismember(B(:,1),A(k,5)),1); means?
Azzi Abdelmalek
Azzi Abdelmalek le 10 Août 2016
doc find
doc ismember

Connectez-vous pour commenter.

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!

Translated by