Borrar filtros
Borrar filtros

Creating a loop to search for matching values in two matrices

5 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 10 de Ag. de 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);

Más respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre Logical 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