matlab - 通过字符串名称访问变量

标签 matlab octave scilab

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

我需要处理的数据包含在一定数量的文本文件中:Data_005, Data_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. 在这个阶段我也可以使用 Octave(不涉及图形建模),尽管它的行为方式相同。

最佳答案

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

foo =

    3.1400

上面的代码在 MATLAB 中有效,Scilab 的文档说它还有一个 eval 函数。不过不确定我是否理解正确。

关于matlab - 通过字符串名称访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975469/

相关文章:

python - 如何合并保存元数据的不同 matlab mat 文件以在 python 中使用?

python - Python 和 MATLAB 中的警告类型

matlab - 如何绘制由 i 索引的函数序列的曲线

python - 在 Python 中使用 regionprops

c++ - 如果两种语言都遵循 IEEE 754,那么两种语言的计算结果是否相同?

Octave - 霍夫曼代码不起作用 - SIG 的所有元素必须是 [1,N] 范围内的整数

matlab - Octave:如何对这些 FOR 循环进行矢量化?

matlab - 倍频程/MATLAB : How to compare structs for equality?

polynomial-math - 如何在 Scilab 中进行多项式逼近?