MATLAB How Do You Correctly Concatenate Strings in a MATLAB Loop?

  • Thread starter Thread starter Saladsamurai
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
To concatenate strings in a MATLAB loop, the correct syntax involves using square brackets and the `num2str` function to convert the loop index into a string. The example provided shows how to prompt the user for input during each iteration using `input(['Enter value of x' num2str(i) ': ']);`. Attempting to create variable names like x1, x2, etc., dynamically is discouraged; instead, using an array (e.g., x(i)) is recommended for better functionality. Assigning values to multiple variables in this way can lead to complications, as shown in the discussion. Using arrays simplifies the process and leverages MATLAB's matrix capabilities effectively.
Saladsamurai
Messages
3,009
Reaction score
7
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:
 
Physics news on Phys.org
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!
 
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.
 
matonski said:
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:
 
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...
 
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 let's 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
 
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.
 
Mark44 said:
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:
 

Similar threads

Replies
1
Views
3K
Replies
5
Views
1K
Replies
4
Views
2K
Replies
1
Views
3K
Back
Top