# MATLAB Really Simple Question

This is so easy I am sure...but I have no idea how to look it up.

I want to execute a loop from i = 1 to N

During each iteration I want to prompt the user for the i-th input. Let's say, I want to ask for

x1, x2, x3, ..., xN.

I should be able to write something like:

Code:
for i:N
x(i) = input(' Enter value of x' & i)
next

But the '&' does not seem to be the proper way to do this.....

Anyone know this one?

Thanks!

matonski
for i = 1:3
x(i) = input([' Enter value of x' num2str(i) ': ']);
end

Wow! You're my hero right now matonski!

Now maybe I can get a little extra out of you? I am used to using

Code:
For i = 1:3
x(i) = input(' stuff ')
end

Can you tell me litle about your syntax? Why are the '[' brackets now required? as in your syntax

Code:
for i = 1:3
x(i) = input([' Enter value of x' num2str(i) ': ']);
end

Thanks again!!!

matonski
Since i is a number, I had to use num2str to convert it to a string. Then, the brackets are used to concatenate the separate strings.

Since i is a number, I had to use num2str to convert it to a string. Then, the brackets are used to concatenate the separate strings.

Excellent! So brackets are used to concatenate strings. Perfect!

Thanks again

I want to assign the value 5 to the variables x1,x2,x3 so I would like to be able to do something to the effect of

Code:
for i = 1:3

[x num2str(i)] = 5

Thanks!

EDIT: I just tried

strcat(x, num2str(i))= 5

and Horrible things happened! Haha...

matonski
Horrible things happened because you are trying to assign a number to a string. It's like trying to assign 5 to the number 4.

I suggest not naming variables that way and simply using x(1), x(2), etc. There's a way using the function eval, but that's generally frowned upon. Besides, using arrays lets you make use of all matlab's matrix functionality very simply and straightforwardly.

For example, if you wanted to just set x(1) through x(3) to 5, you could just do x(1:3) = 5

Mentor
Alternatively, you could do this:
Code:
do i=1:3
x(i) = 5
end
This is longer than the way matonski suggested, but it's more in line with many other programming languages.

do i=1:3
end