按字符串名称访问变量

时间:2012-04-02 11:21:08

标签: matlab octave scilab

我需要将实验数据加载到 scicoslab ,一个(设计非常糟糕的) clone scilab 分支,它恰好支持图形建模。网络上的文档相当差,但它与 scilab octave 相当类似。

我需要处理的数据包含在一定数量的文本文件中:Data_005Data_010,...,Data_100。可以使用loadmatfile命令的 -ascii 标志加载它们中的每一个。

问题来自于loadmatfile("foo", "-ascii")将文件foo.mat加载到名为foo的变量中。为了循环数据文件,我需要做类似的事情:

for i = [5:5:100]
    name = sprintf("Data_%02d", i);
    loadmatfile(name, "-ascii");
    x = read_var_from_name(name);
    do_something(x);
end

我搜索的是内置read_var_from_name,它允许我按字符串访问内部符号表。

你知道是否存在类似的功能吗?

备注:

  1. 如果您的文件是 ascii 格式,则无法覆盖此行为;
  2. 在这个阶段,我也可以使用八度音阶(不涉及图形建模),尽管它的行为方式相同。

2 个答案:

答案 0 :(得分:11)

>> foo = 3.14; name = 'foo'; eval(name)

foo =

    3.1400

以上在MATLAB中有效,Scilab的文档说它也有eval函数。但不确定我是否理解正确。

答案 1 :(得分:9)

@ arne.b有一个很好的答案。

在你的情况下,你也可以在matlab中做到这一点:

a=load('filename.mat')
x=a.('variable_name')
相关问题