computing the cumulative matrix with some conditions
Show older comments
Is there a very concise way to code up computing the cumulative matrix of the following matrix on each column given the following condition that if the element of the column is 1 it adds 0. If it would be 2 it adds 2, if it is 3 it adds to the previous value 4 and if the element of the matrix is 4 it add to the previous value -5
AR =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 2 1 2 1
1 1 2 1 2 2
1 1 1 1 1 1
1 1 1 1 1 1
2 2 2 2 2 2
2 2 2 2 2 2
1 1 1 1 1 1
1 1 1 1 1 1
1 2 2 2 2 2
2 2 2 2 2 2
1 1 1 1 1 1
1 1 1 1 1 1
2 2 2 2 2 2
2 2 1 2 2 2
1 1 1 1 1 1
1 1 1 2 1 1
2 2 1 2 2 2
2 2 1 2 2 2
1 1 1 1 1 1
1 1 1 1 1 1
2 1 2 2 2 1
Answers (2)
Image Analyst
on 6 Mar 2021
0 votes
Why can't you just make up a look up table like [0, 2, 4, -5] and so on. Then just do a simple for loop for the various conditions such as
- adding the number from the look up table to the current value, and replacing the current value with it, or
- adding the number from the look up table to the "previous" element's value
for case #2, I'm not sure whether the result replaces the current element or the previous element.
2 Comments
Zahra Sheikhbahaee
on 6 Mar 2021
Image Analyst
on 7 Mar 2021
That's doing a pure assignment to the number you specify. I thought you wanted to add some numbers together.
Explain exactly, with a sample array, what "it adds to the previous value" means to you.
Also explain what "it adds 2" means to you.
Matt J
on 7 Mar 2021
Is this what you want?
T=[0, 2, 4, -5] ;
result=cumsum(T(AR))
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!