Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

MATLAB Really Simple Question

  1. Apr 2, 2010 #1
    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 (Text):

    for i:N
        x(i) = input(' Enter value of x' & i)
    But the '&' does not seem to be the proper way to do this.....

    Anyone know this one?

    Thanks! :smile:
  2. jcsd
  3. Apr 2, 2010 #2
    for i = 1:3
    x(i) = input([' Enter value of x' num2str(i) ': ']);
  4. Apr 2, 2010 #3
    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 (Text):
    For i = 1:3
    x(i) = input(' stuff ')
    Can you tell me litle about your syntax? Why are the '[' brackets now required? as in your syntax

    Code (Text):
    for i = 1:3
    x(i) = input([' Enter value of x' num2str(i) ': ']);
    Thanks again!!!
  5. Apr 2, 2010 #4
    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.
  6. Apr 2, 2010 #5
    Excellent! So brackets are used to concatenate strings. Perfect!

    Thanks again :smile:
  7. Apr 2, 2010 #6
    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 (Text):

    for i = 1:3

    [x num2str(i)] = 5


    EDIT: I just tried

    strcat(x, num2str(i))= 5

    and Horrible things happened! Haha...
  8. Apr 2, 2010 #7
    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
  9. Apr 2, 2010 #8


    Staff: Mentor

    Alternatively, you could do this:
    Code (Text):

    do i=1:3
      x(i) = 5
    This is longer than the way matonski suggested, but it's more in line with many other programming languages.
  10. Apr 2, 2010 #9
    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:
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook