Reputation: 14078
I need to load experimental data into scicoslab, a (pretty badly designed) clone fork 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 the loadmatfile
command.
The problem comes from the fact that loadmatfile("foo", "-ascii")
loads the file foo.mat
into a variable named foo
. 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:
Upvotes: 11
Views: 24165
Reputation: 14016
lets go through your points one by one:
eval
function which basically does what you want. However this function is to be deprecated in favor of evstr
. There is also the execstr
function which worth studying. loadmatfile
, as far as I have understood, "tries" to load the variables defined in a MATLAB .mat
file (MATLAB's proprietary tabular format) into the Scilab workspace. For example if there is a variable foo
it will "try" to create the variable foo
and loads its value from the MATLAB script. Check this example. I would create a variable x(i) = foo
in the for loop. again your question is not completely clear. .mat
files. Upvotes: 0
Reputation: 16045
@arne.b has a good answer.
In your case you can also do that in matlab:
a=load('filename.mat')
x=a.('variable_name')
Upvotes: 9
Reputation: 4330
>> 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.
Upvotes: 12