【问题标题】:Variable variables in MatlabMatlab中的变量变量
【发布时间】:2012-06-19 09:02:33
【问题描述】:

我有 30 个带有数据的 txt 文件 我想从该文件中创建名为“文件名”的动态向量

pathforindependents = 'C:\MatLab\independent\'

independents = dir(fullfile(pathforindependents,'ind*.txt'))              

for i = 1:length(independents)

    filename = independents(i).name;
    r=regexp(filename,'\.','split');
    qnumber = r(2)
    qtitle=r(3)

    qpath = strcat(pathforindependents,filename)
    qdata = load(qpath)

    mtrxPrefix = 'mtrx_';

    v = strcat(mtrxPrefix,qtitle);

    eval(???????????????????????)

end

但我不知道我该怎么做。无论我尝试什么,Matlab 都会给我“用于‘cell’类型的输入参数的未定义函数‘eval’。”错误?

我的数据文件结构是这样的

ind.01.AGE.txt

0
1
0
0
0
1
1
0
1
...

最后我想达到这个

mtrx_AGE =
0
1
0
0
0
1
1
0
1
...

我该怎么做?谢谢。

【问题讨论】:

标签: matlab file-io eval


【解决方案1】:

要将变量放入基础工作区,请使用assignin

 assignin('base', v, qdata);

正如您在assignin documentation 中看到的,对于某些分配情况,您可能希望使用evalin

【讨论】:

    【解决方案2】:

    您可以使用带有 sprintf 的结构中的字段来动态命名变量:

    for i = 1:100
       my_struct.(sprintf('A%s%i','filename',i)) = i^2
    end
    

    会让

    my_struct.Afilename1 = 1
    my_struct.Afilename2 = 4
    my_struct.Afilename3 = 9
    

    【讨论】:

      【解决方案3】:

      阅读Mathworks TechNote 1103,了解为什么要避免像现在这样使用 EVAL。替代方案包括元胞数组或结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        • 2015-06-15
        相关资源
        最近更新 更多