MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Charlene on 9 May 2013

I have this function

n = 1; Product = 1; while( Product < N ) { Product = Product * (2*n); n = n + 1; } end

and this error keeps on popping up Error: File: Untitled5.m Line: 5 Column: 9 The expression to the left of the equals sign is not a valid target for an assignment.

*No products are associated with this question.*

Answer by the cyclist on 9 May 2013

Accepted answer

That's not valid MATLAB syntax. In particular, the curly brackets shouldn't enclose the while loop. (You also used capital N where you had been using small n.)

Does this do what you intend?

n = 1; Product = 1; while( Product < n )

Product = Product * (2*n); n = n + 1;

end

Jordan Monthei on 9 May 2013

small n is treated as a multiplier onto the 2 whereas large N is used as a maximum value. with that change, you have the intended function. Sorry about the curly brackets, that was my suggestion, I'm used to C coding.

Jordan Monthei on 9 May 2013

i ran this function in MATLAB with N=500; i received a value of 6 for n and a final product of 3840 showing that this function does work.

2 = 2 n=1 -> 1st iteration 2*4 = 8 n=2 -> 2nd iteration 2*4*6 = 48 n=3 -> 3rd iteration 2*4*6*8 = 384 n=4 -> 4th iteration 2*4*6*8*10 = 3840 n=5 -> 5th iteration and then n is incremented one more time before exiting the loop to give n=6.

In this case you could use the expression "#iterations = n-1" after the loop and you would have your answer.

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/75239#comment_148155

For readability sake, I'm going to add this on here.

it would be helpful to know what the rest of the program is doing outside of this function. Is N declared, if so, what is it declared as? Where does Line: 5 Column: 9 correspond within what you have?