1

我有 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 都会给我“未定义的函数 'eval' 用于类型‘cell’的输入参数。” 错误?

我的数据文件结构就像

ind.01.AGE.txt

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

最后我想达到这个

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

我该怎么做 ?谢谢你。

4

3 回答 3

4

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

 assignin('base', v, qdata);

正如您在assignin 文档中看到的,对于某些分配情况,您可能需要使用evalin

于 2012-06-19T09:08:09.037 回答
1

您可以使用带有 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
于 2012-06-19T09:40:34.443 回答
0

阅读Mathworks 技术说明 1103,了解为什么应该避免像现在这样使用 EVAL。替代方案包括单元阵列或结构。

于 2012-06-19T13:41:12.127 回答