MATLAB Matlab -- how can i use a FOR loop if I have 2 variables changing

Click For Summary
The discussion focuses on using a FOR loop in MATLAB with two variables, m and q, where the original code has syntax issues. Participants clarify that the loop's syntax does not support including a variable in the step size option and suggest separating the loops if the variables vary independently. They emphasize the importance of clearly defining the desired behavior of the loop to avoid confusion. Additionally, it is noted that the loop control variable cannot be altered within the loop body. Overall, proper structuring of the loops is essential for correct execution in MATLAB.
jiaying
Messages
1
Reaction score
0
Hey,for following code the 3rd loops i need to have 2 variables m and q .Could anyone help?
Matlab:
for t=1:maxiterations
    toterror=0;
    for j=1:numfeature
        totslope=0;
        for i=1:m&&q=1:numfeature
              z=0;
           for jj=1:numfeature
               z=z+prevtheta(jj)*x(i,jj);
           end
           h=1.0/(1.0+exp(-z));
           H=H+(x(i,q)*h*(1-h)*x(i,jj));
          
           totslope=(totslope+(h-y(i))*x(i,j));
           toterror=(toterror+-y(i)*log(h)-(1-y(i))*log(1-h));         
        end       
   toterror=toterror/numtrainsam;
   theta(j)= theta(j)-H\totslope;
    end
    prevtheta=theta;
      errorperiteration(t)=toterror/j;
end
 
Last edited by a moderator:
Physics news on Phys.org
I assume you're asking about this loop.
Matlab:
for i=1:m&&q=1:numfeature
              z=0;
           for jj=1:numfeature
               z=z+prevtheta(jj)*x(i,jj);
           end
           h=1.0/(1.0+exp(-z));
           H=H+(x(i,q)*h*(1-h)*x(i,jj));
          
           totslope=(totslope+(h-y(i))*x(i,j));
           toterror=(toterror+-y(i)*log(h)-(1-y(i))*log(1-h));         
        end
Why is m in there? It's not used in that for loop, and it's not used outside the loop.
 
  • Like
Likes jedishrfu
In general, you would either use separate loops if they vary independently or make one dependent on the other.

Say m varies from 1 to 10 and n varies from 4 to 40

Then loop on m and compute n = 4*m inside the loop.
 
Last edited:
What do you want to happen if m and numfeature are not the same value?
 
It helps if you say in words what you want to do. In MATLAB the syntax for for loop is

Code:
for ii=intialValue: stepSize: maxValue

I don't think you can include a variable in the stepSize option. What do you want to do with this for loop?
 
S_David said:
I don't think you can include a variable in the stepSize option.
I'm fairly certain that you can use variables for all three: initVal, stepVal, and endVal. I don't have matlab, so I can't confirm this.

However, the for loop body can't change the value of the index variable (the loop control variable).
 
I think you can use variables in the all three, too, but I don't think you can use the following syntax

Code:
initialValue=1;
endValue=10;
for ii=initialValue:m=0.5:endValue

as the OP tried to do.
 
Last edited:
S_David said:
I think you can use variables in the all three, too, but I don't think you can use the following syntax

Code:
initialValue=1;
maxValue=10;
for ii=initialValue:m=0.5:endValue

as the OP tried to do.
The problem is the "m=" part.
I believe this would be fine:
Matlab:
initVal=1;
stepVal = 0.5
endVal=10;
for ii=initVal : stepVal : endVal
;; loop body
end
 
  • Like
Likes EngWiPy

Similar threads

  • · Replies 4 ·
Replies
4
Views
1K
Replies
5
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K