Azzera filtri
Azzera filtri

How do you use one vector to name another vector?

1 visualizzazione (ultimi 30 giorni)
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 Commento
Image Analyst
Image Analyst il 16 Dic 2014
Modificato: Image Analyst il 16 Dic 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.

Accedi per commentare.

Risposta accettata

Star Strider
Star Strider il 16 Dic 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 Commenti
Star Strider
Star Strider il 18 Dic 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by