我目前有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);
我知道这是错误的,但我不知道如何使变量的名称依赖于原始文件名。任何帮助将不胜感激。
此致 杰里
答案 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);