How to substract a loop from the first 10 cell values of the loop?
1 次查看(过去 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!
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/546933/image.png)
0 个评论
采纳的回答
Jorg Woehl
2021-3-11
Would this work?
X(2,n) = X(1,n) - X(1,mod(n-1,10)+1)
3 个评论
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 Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!