77 views (last 30 days)

So this is a code for gaussian elimination, the code seems to work but my question is for clarification on the function of the for loop and how Matlab reads it. This is more a question for my own understanding of the computer language than the math involved.

the section of code I am looking at is

x=zeros(n,1);

for i=n:-1:1

x(i)=(A(i,end)-A(i,i+1:n)*x(i+1:n))/A(i,i);

end

So how would the algorithm read this. My intution says when it reads x(i+1:n), that the program will simply move to the next i in the loop.

Steven Lord
on 31 Aug 2020

The only part of that code that changes the value of i is the for statement itself, and MATLAB automatically handles changing the value of i to the next element of the vector n:-1:1 when the control flow returns to the for statement.

The expression i+1:n reads the value of i and computes with that value but does not modify the value.

Steven Lord
on 31 Aug 2020

Almost.

x(i)=(A(i,end)-A(i,i+1:n)*x(i+1:n))/A(i,i);

Plugging in i = 4 and n = 4:

x(4)=(A(4,end)-A(4,4+1:4)*x(4+1:4))/A(4,4);

The expression 4+1:4 simplifies to the empty 1-by-0 vector since we perform addition (level 6 in the operator precedence table) before applying the colon operator (level 7.) How many steps does it take to get from 5 to 4 when you step forward by 1 unit each time? You can't get there from here.

Now if those i+1 terms were i-1 instead (subtraction is also at level 6) yes, those terms would be 3:4 and that creates a two element long vector. As long as x is a column vector that vector-vector multiplication would be defined and would return a scalar. The whole expression on the right side would then result in a scalar which fits nicely into the one element of x being reference on the left side.

Opportunities for recent engineering grads.

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

Start Hunting!
## 1 Comment

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/586967-how-does-matlab-interpret-for-loops-when-say-i-n-1-1#comment_991922

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/586967-how-does-matlab-interpret-for-loops-when-say-i-n-1-1#comment_991922

Sign in to comment.