Creating a loop to search for matching values in two matrices

3 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 10 Aug. 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);

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by