Update elements in matrix with condition

I have a large matrix (1st image). I need to update element in column 3&4 whenver it becomes 0 in column 5 or integer changes in column 6.
And I want to update it with sum from column 1 and 2.
See second image for more clarity.
My matrix should perform this for all the rows.

1 comentario

Ravi Kumar
Ravi Kumar el 26 de Oct. de 2021
Tried this, but not working. (still getting same values in column 3&4)
N = size(P,1);
for i = 1:1:N
if P(N,5) == 0
P(N,3) = P(N,1) + P(N,3);
end
end

Iniciar sesión para comentar.

 Respuesta aceptada

Cris LaPierre
Cris LaPierre el 26 de Oct. de 2021
Use logical arrays (Ch 12 of MATLAB Onramp).
Perhaps something like this (untested)
P(P(:,5)==0,3)=sum(P(P(:,5)==0,[1,3],2));
P(P(:,5)==0,4)=sum(P(P(:,5)==0,[2,4],2))

Más respuestas (1)

Rik
Rik el 26 de Oct. de 2021
N = size(P,1);
for k = 1:1:N
if P(k,5) == 0
P(k,3) = P(k,1) + P(k,3);
end
end
Similar code will allow you to edit when the value changes:
if k>1 && A(k-1)==A(k)

Categorías

Productos

Preguntada:

el 26 de Oct. de 2021

Respondida:

el 26 de Oct. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by