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

 Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 11 Mai 2020
Bearbeitet: Ameer Hamza am 11 Mai 2020

0 Stimmen

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

Weitere Antworten (1)

Simon Philipp Hehenberger
Simon Philipp Hehenberger am 11 Mai 2020

0 Stimmen

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'.

Kategorien

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by