How to derive a variable name from a variable?

How to derive a variable name from a variable?
A = [5 6 7 8];
B = ‘A’;
A(1) % this works and return the first element of A which is 5
B(1) % this doesn’t work like the code above

4 comentarios

Adam
Adam el 7 de Feb. de 2017
Editada: Adam el 7 de Feb. de 2017
What exactly are you trying to do? It doesn't sound like a good plan - dynamic variable names are a very bad idea.
A = [5 6 7 8];
B = A;
A(1);
B(1);
would give you what you want from the perspective of the information you have given, that you simply want B(1) to return the same as A(1).
Rightia Rollmann
Rightia Rollmann el 7 de Feb. de 2017
What I want to do is to access the first column and then the second column of a 5-by-7 matrix which is the value of a field named B. B is the third field of struct A. How can I do it dynamically best?
Adam
Adam el 8 de Feb. de 2017
If B is a field of A why are you trying to create a variable B that represents the whole of A.
Just A.( 'B' ) would give what you want. Fields are not really ordered in a struct, at least not for general usage.

Iniciar sesión para comentar.

 Respuesta aceptada

Stephen23
Stephen23 el 7 de Feb. de 2017
Editada: Stephen23 el 7 de Feb. de 2017
Although often loved by beginners, dynamically accessing variable names is not a robust, fast, or good way to write code. It makes code hard to read, slow, difficult to debug, and has other disadvantages too:
If you really need to access the names dynamically, then consider using a structure: it is fast and easy to access structure field names dynamically:
S.A = [5,6,7,8];
x = 'A';
S.(x)

Más respuestas (2)

Star Strider
Star Strider el 7 de Feb. de 2017
MATLAB does not recognise char(0145) and char(0146) as quotation marks in code.
A = [5 6 7 8];
B = 'A' % Sets ‘B’ TO Be Character ‘A’
B = A
B(1)
produces:
B =
A
B =
5 6 7 8
ans =
5
Jan
Jan el 8 de Feb. de 2017
Editada: Jan el 8 de Feb. de 2017
According to your comment, which is another problem than the original question:
A.B(:, 1:2)

Categorías

Más información sobre Dynamic System Models en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 7 de Feb. de 2017

Editada:

Jan
el 8 de Feb. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by