Matlab importdata函数具有自定义输出变量名称

时间:2014-07-07 11:21:35

标签: matlab import eval

我需要从路径存储在名为fpath的变量中的文件中导入数据,并且输出变量需要具有存储在名为vname的另一个变量中的名称。 我试图使用eval功能,但没有成功。
我使用eval([vname '= importdata(fpath);']);
我收到了错误 - Unexpected MATLAB expression
谢谢提前。

3 个答案:

答案 0 :(得分:1)

文件/tmp/file.txt包含1234567890:

>> fpath = '/tmp/file.txt';
>> vname = 'foo';
>> eval(strcat(vname,'=importdata(''',fpath,''')'));

foo =

   1.2346e+09

答案 1 :(得分:0)

你应该只需要

vname = importdata(fpath);

无需eval声明。 Vname应该包含一个包含数据的矩阵。

答案 2 :(得分:0)

如果没有完整的错误消息并且不知道fpathvname变量的类型和值,则很难回答这个问题。使用一些通用变量名称和路径评估eval([vname '= dir(fpath);'])对我来说很好。

话虽如此,我强烈建议不要使用eval。很难获得适当的语法,难以调试,并且使MATLAB难以在后台进行优化。第一步是评估(hah)您首先使用eval的原因。如果您动态生成变量名称,我建议您使用结构接受dynamic field names的能力,而不是诉诸eval

例如:

vname = 'myvariable';
fpath = 'C:\test';
counter = 3;
mydata.([vname '_' num2str(counter)]) = dir(fpath);

返回:

mydata = 

    myvariable_3: [21x1 struct]