naming a structure
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
clear all
FName = {'Data1','Data2','Data3'};
data1 = [rand(32,1),rand(32,1),rand(32,1)];
NewName = {'Location1'};
Location1 = struct('Data1',data1)
From this example how is it possible to adapt the script so that instead of typing 'Location1' as the name of the structure, can that be defined from 'NewName' i.e. defining the name of the structure from a pre-defined string?
0 Kommentare
Akzeptierte Antwort
Kevin Holst
am 22 Feb. 2012
You can use eval, but eval needs to be used with extreme care. You can really screw things up accidentally.
eval([NewName ' = struct(''Data1'',data1);'])
If somehow your string is a command like 'clear all' or worse then that command will be run, so use eval sparingly. If there's a possibility of that happening then you might want to put a check in there.
1 Kommentar
Jan
am 23 Feb. 2012
Creating variables dynamically has two big disadvantages: 1. The debugging is very hard, because you cannot see in the code, where the value is defined. 2. Inserting a variable to the internal lookup-table of variables is slow, while variables, which are defined explicitely in the code are handled much faster, e.g. by the JIT-acceleration.
Weitere Antworten (1)
Walter Roberson
am 22 Feb. 2012
4 Kommentare
Kevin Holst
am 23 Feb. 2012
I like this approach, and will be suggesting it in the future. Much safer, clearer, and cleaner.
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!