How to substract a loop from the first 10 cell values of the loop?

2 views (last 30 days)
Hi everyone,
I have a loop which reads an excel file and calculates some stuff and read a value to cells in a row
For n= 1:200
X(1,n) = C(1,2)
X(2,n) = X(1,n)- [ X(1,n) I want this tem remain constant in pattern of 10. For instance, X(1,101)-X(1,1), X(1,102) - X(1,2) up to ten and again X(1,111)-X(1,1), X(1,112)-X(1,2) ....)
end of n
Could you please help me to get this done. Thank you!

Accepted Answer

Jorg Woehl
Jorg Woehl on 11 Mar 2021
Would this work?
X(2,n) = X(1,n) - X(1,mod(n-1,10)+1)
  3 Comments
Jorg Woehl
Jorg Woehl on 12 Mar 2021
Hi Wolfgang, my pleasure :)... And yes, you can reduce the interval to every 4 simply by replacing the 10 by 4. To understand what the statement does, let's do a smaller loop:
for n=1:20
mod(n-1,10)+1
end
This gives the series 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 (and so on for larger n).
The mod function is the remainder (modulo) of the first argument (n-1) divided by the second (10). I first tried
mod(n,10)
but that yields the series 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0. Which doesn't work here, because we don't want 0 as an index into X. And we also don't want to stop at index 9, but at 10.
Which means that we need to add 1 to the mod result, but then the series starts with 2 3 4..., while we want it to start with 1 2 3.... The solution to that is to subtract 1 before taking the remainder: mod(n-1,10) + 1.
So, the modulo function gives you the repeating blocks that you want, and after that it's a little bit of playing around until everything is in place.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!