Merge specific text files

1 次查看(过去 30 天)
I have a code that for each iteration creates specific files with names :
M1_mR1.txt,...,M1_mr100.txt, and
M2_mR1.txt,..., M2_mR100.txt.
After that I would like to merge all the files that Have prefix M1_.....txt into one file and all the files that Have prefix M2_.....txt into one file.
How could I do this?
  3 个评论
Ivan Mich
Ivan Mich 2020-7-6
Each file has 4 columns and one line. Each file has numbers

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2020-7-6
编辑:Stephen23 2020-7-6
You will need two loops, the outer loop for M1, M2, etc, and the inner loop for the files R1,R2,R3,...R100, e.g.:
D = 'path to the directroy where the files are saved';
Mn = 3; % number of groups.
Rn = 100; % number of files in each group.
for Mk = 1:Mn % M1, M2, ...
C = cell(1,Rn); % preallocate cell array for this group
for Rk = 1:Rn % R1, R2, ... R100
F = sprintf('M%u_mR%u.txt',Mk,Rk);
C{Rk} = dlmread(fullfile(D,F))
end
M = vertcat(C{:}); % create one matrix from entire group
F = sprintf('M%u_ALL.txt',Mk);
dlmwrite(F,M) % save
end
Of course you do not have to use dlmread and dlmwrite: you can trivially change the file importing/exporting functions for something more suitable, or that you have a preference for, or that you think is fancier.
Note that this answer will actually concatenate the file data in the order R1,R2,R3,...R100.

更多回答(1 个)

KSSV
KSSV 2020-7-6
% to read files starting with M1
txtFiles = dir("M1*.txt") ;
N = length(txtFiles) ;
A = zeros(N,4) ;
for i = 1:N
a = importdata(txtFiles(i).name) ;
A(i,:) = a ;
end
  4 个评论
Stephen23
Stephen23 2020-7-6
编辑:Stephen23 2020-7-6
Note that this answer will concatenate the file data in this order:
M1_mR1.txt
M1_mR10.txt
M1_mR100.txt
M1_mR11.txt
M1_mR12.txt
M1_mR13.txt
M1_mR14.txt
M1_mR15.txt
M1_mR16.txt
M1_mR17.txt
M1_mR18.txt
M1_mR19.txt
M1_mR2.txt
M1_mR20.txt
M1_mR21.txt
M1_mR22.txt
...
M1_mR89.txt
M1_mR9.txt
M1_mR90.txt
M1_mR91.txt
M1_mR92.txt
M1_mR93.txt
M1_mR94.txt
M1_mR95.txt
M1_mR96.txt
M1_mR97.txt
M1_mR98.txt
M1_mR99.txt
which is unlikely to be very useful for further analysis.
To import the files in order 1,2,3,...100 you will either need to sort the filenames taking into account the number value (e.g. using an alphanumeric sort) or generate the filenames yourself (e.g. using sprintf).

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by