【问题标题】:Merging multiple files into one file by using MATLAB使用MATLAB将多个文件合并为一个文件
【发布时间】:2016-03-29 16:40:21
【问题描述】:

我在这里分享我的一个 .dat 文件中的数据。我有 16162 个不同的文件。我将所有内容合并到一个文件中,并希望在 matlab 中读取它,需要从单个文件中提取三个参数的值,并将它们按行或按列排列。我可以通过使用 C 尖锐代码来做到这一点,但我想通过使用 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 中读取所有这些文件,并且输出应该以这种方式显示在单个文件中。

【问题讨论】:

  • 如果你在 StackOverflow 上问过这个问题,你可能会有更好的运气。 Stats SE 在统计方法方面比编程问题更强。
  • 你要提取哪三个参数?合并文件时,是否只是附加单个文件?
  • 输出文件的格式是什么?
  • 你当然可以在 MATLAB 中做到这一点,但 Perl 可能会更容易。您可以使用 PERL 函数直接从 MATLAB 运行 perl 脚本。你考虑过这个选项吗?

标签: matlab


【解决方案1】:

鉴于所有文件都具有完全相同的结构,以下将完成这项工作(只需确保在代码中对 cme​​ts 进行扩缩,您将需要调整文件名和要读取的文件数量):

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,您可以更改格式。

【讨论】:

  • Mustafa 似乎删除了他的帐户:s 你觉得这个答案足够吗@yuk?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多