Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用MATLAB将多个文件合并为一个文件_Matlab - Fatal编程技术网

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

利用MATLAB将多个文件合并为一个文件,matlab,Matlab,在这里,我正在共享.dat文件中的一个数据。我有16162个不同的文件。我将所有内容合并到一个文件中,并希望在matlab中读取它,需要从单个文件中提取三个参数值,并将它们按行或列排列。我可以用C sharp代码来做,但我想用matlab来做。有谁能帮我写代码吗 以下是一个示例文件数据: DISTRIBUTION: monomodal log-normal n : 1.000 r_mod: .010 sigma: 1.400 number conc., surface. conc

在这里,我正在共享.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 means radius)。我在本页中输入的文件中这三个参数的对应值为.010、1.400、1267E-01

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


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

鉴于所有文件都具有完全相同的结构,以下内容将完成此工作(只需确保在代码中对注释进行扩孔,您需要调整要读取的文件名和文件数):


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

如果您在StackOverflow上询问此问题,您的运气可能会更好。统计SE在统计方法上比编程问题更强大。您希望提取哪三个参数?当您合并文件时,您只是简单地附加了单个文件吗?输出文件的格式是什么?您当然可以在MATLAB中完成,但Perl可能会更容易。您可以使用perl函数直接从MATLAB运行perl脚本。你考虑过这个选项吗?看来穆斯塔法删除了他的帐户:s你觉得这个答案足够@yuk吗?
r_mod sigma surface mean radius .01 1.4 1.27E-02 .02 1.4 2.67E-02 .03 1.4 3.98E-02 ... .. .. .. .. .. .. .. ..
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);