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 Comment

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

Sign in to comment.

 Accepted Answer

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))

More Answers (1)

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)

Categories

Find more on Programming in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!