Accessing variable by string name
Solution 1
>> foo = 3.14; name = 'foo'; eval(name)
foo =
3.1400
The above works in MATLAB, and Scilab's documentation says it also has an eval
function. Not sure if I understood you correctly, though.
Solution 2
@arne.b has a good answer.
In your case you can also do that in matlab:
a=load('filename.mat')
x=a.('variable_name')
Dacav
Computer enthusiast and programmer, with a true passion for C and pesky details of various Unix-like systems.
Updated on July 23, 2020Comments
-
Dacav almost 4 years
I need to load experimental data into scicoslab, a (pretty badly designed)
clonefork of scilab which happens to support graphical modeling. The documentation on the web is pretty poor, but it's reasonably similar to scilab and octave.The data I need to process is contained into a certain number of text files:
Data_005
,Data_010
, …,Data_100
. Each of them can be loaded using the -ascii flag for theloadmatfile
command.The problem comes from the fact that
loadmatfile("foo", "-ascii")
loads the filefoo.mat
into a variable namedfoo
. In order to to cycle on the data files, I would need to do something like:for i = [5:5:100] name = sprintf("Data_%02d", i); loadmatfile(name, "-ascii"); x = read_var_from_name(name); do_something(x); end
where what I search for is a builtin
read_var_from_name
which would allow me to access the internal symbol table by string.Do you know if there exist a similar function?
Notes:
- There's no way of overriding this behavior if your file is in ascii format;
- In this phase I could also use octave (no graphical modelling is involved), although it behaves in the same way.
-
miken32 almost 9 yearsJust wanted to say (as someone from a programming background where
eval()
is considered evil) thanks for pointing this out; I had no idea this syntax existed! -
Oli almost 9 years@miken32
eval
is indeed evil.