Effacer les filtres
Effacer les filtres

Getting variables name from char array

67 vues (au cours des 30 derniers jours)
Mohamed Salah
Mohamed Salah le 11 Mai 2020
Modifié(e) : Ameer Hamza le 11 Mai 2020
assuming I have a char array like x
a1=[1 2 3 4];
a2=[10 11 15 11];
b2=[4 5 6 7];
c2=[8 9 10 11];
x=['a1' 'a2' 'b2' 'c2']
assuming I have data like this, how can I make the char in x be treated like the variable name meaning that ('a1' --> a1 == [1 2 3 4])
Notes: - All the variables are created before the char array
- I have to name the variables like (a1,a2,..etc.)
-I have a large number of variables

Réponse acceptée

Ameer Hamza
Ameer Hamza le 11 Mai 2020
Modifié(e) : Ameer Hamza le 11 Mai 2020
Short answer: don't used these variable names: https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval, instead use a 2D array or a cell array.
The next best thing to do it to use 'a1', 'a2', ..., 'a3' as filednames of the struct. For example
myStruct.a1=[1 2 3 4];
myStruct.a2=[10 11 15 11];
myStruct.b2=[4 5 6 7];
myStruct.c2=[8 9 10 11];
x={'a1' 'a2' 'b2' 'c2'}; % you need a cell array here. The code line in your question will not work
Access them like this
>> myStruct.(x{1}) % same as myStruct.a1
ans =
1 2 3 4
>> myStruct.(x{3})
ans =
4 5 6 7
As a last resort. If you are insistent on using these variable names, then use eval(): https://www.mathworks.com/help/matlab/ref/eval.html or evalc(): https://www.mathworks.com/help/releases/R2020a/matlab/ref/evalc.html
a1=[1 2 3 4];
a2=[10 11 15 11];
b2=[4 5 6 7];
c2=[8 9 10 11];
x={'a1' 'a2' 'b2' 'c2'}; % you need a cell array here. The code line in your question will not work
Access them using eval
>> eval(x{1})
a1 =
1 2 3 4
>> eval(x{4})
c2 =
8 9 10 11

Plus de réponses (1)

Simon Philipp Hehenberger
Simon Philipp Hehenberger le 11 Mai 2020
Create a struct for your data.
You can dynamically create fields in your struct with
For example:
for ii=1:4
samplestruct.(['a' num2str(ii)])=fielddata;
end
creates four fields in the struct 'samplestruct', named 'a1',..,'a4'.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by