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

2 次查看(过去 30 天)
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!

采纳的回答

Jorg Woehl
Jorg Woehl 2021-3-11
Would this work?
X(2,n) = X(1,n) - X(1,mod(n-1,10)+1)
  3 个评论
Jorg Woehl
Jorg Woehl 2021-3-12
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.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by