How can i create variables from a string?

Hi! I want to create an array of variables m1,m2,m3,....,mn, that are created by join "m" with array "1,2,3,...,n" I wrote a code (below), and i want to after run it, Matlab returns: m1=1 m2=5
M=[1 2 3;
4 5 6;
7 8 9];
mch=diag(M,0)';
x=2;
for i=1:x
ha=num2str(i);
m(ha)= mch(i);
end
Thank you so much!

 Respuesta aceptada

KSSV
KSSV el 18 de Mayo de 2017
Why you need a dynamic variable naming? This is not suggested and you should avoid.
You have matrix already and you can happily call them:
M=[1 2 3;
4 5 6;
7 8 9];
M(1) % is M1
M(2) % is M2
M(6) % is M6
.
.
.M(i) % is Mi where i <= numel(M)

3 comentarios

Le Dung
Le Dung el 18 de Mayo de 2017
Editada: Le Dung el 18 de Mayo de 2017
Yes, It's very kind of you. But, because i want to make a general problem. Thank you so much. I wrote a code as (below), why matlab returns results that i don't want. Detail, I received a variable "eval" that has size is (1x77) and, only end value of eval is equal to 5. Why?, I want to m1 = 1, m2 = 5
M=[1 2 3;
4 5 6;
7 8 9];
mch=diag(M,0)';
x=2;
for i=1:x
eval(['M' num2str(i)'])=mch(i);
end
Stephen23
Stephen23 el 18 de Mayo de 2017
Editada: Stephen23 el 7 de Oct. de 2019
"But, because i want to make a general problem"
Yes, you are trying to make a general problem. And KSSV gave you a general solution instead.
Good work, KSSV.
M = [1,2,3;4,5,6;7,8,9];
mch = diag(M,0); % this is all you need
Sami Aldalahmeh
Sami Aldalahmeh el 7 de Oct. de 2019
I believe that you should answer the question if you can not discourage the user. Giving advice in a polite way, on the other hand, is always welcomed.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 18 de Mayo de 2017

Editada:

el 7 de Oct. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by