# How can i create variables from a string?

1 view (last 30 days)
Le Dung on 18 May 2017
Edited: Stephen23 on 7 Oct 2019
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!
Stephen23 on 18 May 2017
Edited: Stephen23 on 25 Jun 2019

KSSV on 18 May 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 CommentsShow 1 older commentHide 1 older comment
Stephen23 on 18 May 2017
Edited: Stephen23 on 7 Oct 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 on 7 Oct 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.