MATLAB Really Simple Question

  • #1
3,003
2

Main Question or Discussion Point

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! :smile:
 

Answers and Replies

  • #2
166
0
for i = 1:3
x(i) = input([' Enter value of x' num2str(i) ': ']);
end
 
  • #3
3,003
2
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!!!
 
  • #4
166
0
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.
 
  • #5
3,003
2
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 :smile:
 
  • #6
3,003
2
What about this one?

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...
 
  • #7
166
0
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
 
  • #8
33,518
5,196
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.
 
  • #9
3,003
2
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.
Hmmm. I don't think this will do. This will set the i-th element of the array (vector) x to 5 for each value of i. Whereas I want to set one variable named 'x1' equal to 5 and 'x2' =5, etc

Edit: ok Mark, I see you were simply complementing matonski's post and thus are implying that I should use an array :smile:
 

Related Threads on MATLAB Really Simple Question

  • Last Post
Replies
2
Views
39K
  • Last Post
Replies
1
Views
2K
Replies
4
Views
2K
Replies
3
Views
1K
Replies
2
Views
2K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
6
Views
12K
  • Last Post
Replies
3
Views
740
  • Last Post
Replies
4
Views
5K
Replies
9
Views
7K
Top