How do you use one vector to name another vector?

2 views (last 30 days)
If you have three vectors: vect1 = [1 2], vect2 = [4 5], and vect3 = {'name1';'name2'}, how do I name vect1 and vect2 using the contents of vect3, i.e., how do I obtain
name1 = [1 2]
name2 = [4 5].
I have found one solution where the function assignin is used but I was wondering if there may be a more streamlined/simpler solution?
  1 Comment
Image Analyst
Image Analyst on 16 Dec 2014
Edited: Image Analyst on 16 Dec 2014
And if you don't know the names in advance so that you can hard code in the variable name, and you have to create the variable dynamically from strings, then how are you going to be able to refer to name1 and name2 later in your code? Like you said, there is a simpler way to do whatever it is you want to do, and that way does not involve doing what you asked for. I completely agree with Star Strider there. Just let us know what you really need to accomplish and, rather than suggest a bad method like this yourself, let us advise you how to get you there.

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 16 Dec 2014
What you want to do has to be near the top of everyone’s ‘Don’t Do This!’ list.
But if you must, this works:
vect1 = [1 2];
vect2 = [4 5];
vect3 = {'name1';'name2'};
for k1 = 1:length(vect3)
eval([vect3{k1} sprintf(' = vect%-d',k1)]);
end
name1
name2
  4 Comments
Star Strider
Star Strider on 18 Dec 2014
The eval function has its uses. I Answered one Question a while ago where the OP had a number of 2D matrices output by a FORTRAN routine that gave sequential names to each matrix. The OP wanted to use a loop with eval to concatenate them to a single three-dimensional array.
Perhaps Danny has the reverse situation, in which he has to write 2D arrays to be read by another routine that won’t read MATLAB multidimensional arrays. That would be a perfectly legitimate reason to do what he wants to do.

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!