具有取决于导入的文件名的变量名称。 MATLAB

时间:2014-11-30 18:27:51

标签: matlab

我目前有72个.dat文件,我可以使用下面的代码上传到我的matlab工作区;

files = dir('*.dat');
for i=1:length(files)
    eval(['load ' files(i).name ' -ascii']);
   end

那部分工作正常。每个文件包含三列数据。第一个是时间,第二个和第三个是U和V速度分量。可以编写一个代码,将所有这些.dat文件导入我的工作区,然后根据文件名命名每列数据。例如,每个文件都被命名为Point1,Point2等,一直到Point73。那么.dat文件Point1中的三列可以命名为Time1,U1和V1,并且从Point2.dat文件中取名为Time2,U2和V2吗?

目前我正在尝试这段代码;

Time1  = Point1(1:1024, 1);
U1 = Point1(1:1024, 2);
V1 = Point1(1:1024, 3);
Time2  = Point2(1:1024, 1);
U2 = Point2(1:1024, 2);
V2 = Point2(1:1024, 3);

我知道这是错误的,但我不知道如何使变量的名称依赖于原始文件名。任何帮助将不胜感激。

此致 杰里

1 个答案:

答案 0 :(得分:1)

根据Generate Field Names from Variables,您可以使用括号运算符。

如果你使用struct,你可以这样做:

for i=1:3
   varname = strcat('U',num2str(i));
   a.(varname) = i;
 end

a =

    U1 =  1
    U2 =  2
    U3 =  3

此外,出于Alternatives to the eval Function中给出的原因,如果可能,您应尽量避免使用eval。 您可以加载与此类似的变量:

filename = strcat('Point',num2str(i),'.dat'); % filename = Point1.dat
load(filename);