使用MATLAB将多个文件合并为一个文件

时间:2012-03-31 13:15:39

标签: matlab

我在这里分享我的一个数据,它位于.dat文件中。我有16162个不同的文件。我将所有文件合并到一个文件中,并希望在matlab中读取它,并且需要从单个文件中提取三个参数值,并按行或列方式排列。我可以通过使用C sharp代码来实现,但我想通过使用matlab来实现。有人可以帮我写出代码吗?

以下是一个示例文件数据:

DISTRIBUTION: monomodal log-normal
n    :  1.000
r_mod:   .010
sigma:  1.400

number conc., surface. conc., volume conc. 

 .1087E+01     .1866E-02       .7878E-05

part. ave. radius, surf. ave. radius, vol. ave. radius : 
 .1149E-01   .1169E-01   .1201E-01

surface mean radius, volume mean radius : 
 .1267E-01   .1392E-01

eff. variance : 
 .9939E-01

让我们说:我想提取或读取三个参数(r_mod,sigma,Surface表示半径)。我在此页面中放入的文件中这三个参数的相应值是.010,1.400,.1267E-01

输出应该是(我想要的):

r_mod sigma surface mean radius .01 1.4 1.27E-02 .02 1.4 2.67E-02 .03 1.4 3.98E-02 ... .. .. .. .. .. .. .. ..

我在同一目录中有超过数千个类似的文件。我想在matlab中读取所有这些文件,输出应该以这种方式显示在一个文件中。

1 个答案:

答案 0 :(得分:0)

鉴于所有文件具有完全相同的结构,以下将完成这项工作(只需确保在代码中重新编写注释,您需要调整文件名和要读取的文件数):

n = 2; % Number of files you want to go through
vals = zeros(1,3*n);
str = 'r_mod sigma surface mean radius        ';
k = 1;
for i = 1:n
    path = ['myFile',num2str(i),'.dat']; % change this to fit your file names
    fid = fopen(path, 'rb');
    data = textscan(fid,'%s');
    fclose(fid);
    data = data{1};
    vals(k) = str2double(data{8});
    vals(k+1) = str2double(data{10});
    vals(k+2) = str2double(data{40});
    k = k+3;
end
out = [str, num2str(vals)];
fid = fopen('output.txt', 'w');
fprintf(fid,out);

文件output.txt现在包含您想要的行。如果您希望输出文件也是.dat,则可以更改格式。