MATLAB Answers

1

How to convert a string into a variable?

Asked by osminbas on 12 Apr 2012
Latest activity Commented on by Stephen Cobeldick on 18 May 2018 at 14:30

Hello,

I have a variable (vector) defined at the beginning of my code, say A1. Then I define string:

Name=strcat('A','1');

Now Name='A1'. How can I convert it into a variable? It might not make sense to define a string with a variable and try to convert it to the variable itself but it will be helpful in my code. Thank you!

3 Answers

Answer by Thomas
on 12 Apr 2012
 Accepted Answer

doc genvarname

http://www.mathworks.com/help/techdoc/ref/genvarname.html

'eval' can do it however...

'EVAL' is very dangerous to use and is very hard to debug..

Here are some techniques given by Walter in reply 2 that explain what you can do, and what you should not do..

http://www.mathworks.com/matlabcentral/newsreader/view_thread/159440

  1 Comment

This creates a valid name, but not a variable itself.

Sign in to comment.


Answer by Jan
on 12 Apr 2012

The eval command can do this:

A1 = 23;
Name = 'A1';
disp(eval(Name));

But this is inefficient and prone to bugs, which are extremly hard to find. Therefore it is strongly recommended to avoid such dynamic variable access, see: FAQ: How to create variables A1, A2, ... in a loop.

You find a bunch of posts related to the avoidance of eval in this forum. There is always a better solution.

  0 Comments

Sign in to comment.


Answer by Jeferson Araujo de Oliveira on 18 May 2018 at 13:57
Edited by Jeferson Araujo de Oliveira on 18 May 2018 at 13:58

I second the comments from the other developers: there's always a way to avoid creating variable names dynamically. 'eval' is the command that allows you to do it, but maybe containers.Map could be a better solution: https://uk.mathworks.com/help/matlab/ref/containers.map.html;jsessionid=3832da8c651c2187ef12c4505fcb

Anyway, I've had issues with genvarname dealing with special characters in the past. This is more robust:

varName = matlab.lang.makeValidName('123your.string(1)')

PS: this will only modify your string so that it becomes a valid variable name, if it isn't already.

  0 Comments

Sign in to comment.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today