How to alter data (multiply) from all the columns of multiple text files in a folder
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ramesh Bala
il 19 Lug 2021
Commentato: Mathieu NOE
il 18 Nov 2021
I have multiple text files locate in a folder.The names of the text files varies.How shall call them & multiply all the values inside all the text files with 10^-6 in a loop.
Attached 3 text files for refernces.I've made a small code but its ineffective as file name changes and not a value of numstr.
filenames = 'Path1_Step_0001';
for i = 1:length(filenames)
s{i} = readmatrix (['Path1_Step_' numstr(i).'txt']);
end
0 Commenti
Risposta accettata
Mathieu NOE
il 19 Lug 2021
hello
this is my suggestion ... the natural sorting order of the files may not be critical here, but it may be helpful another day , so this is a bonus ... natsortfiles is available from the FEX : Natural-Order Filename Sort - File Exchange - MATLAB Central (mathworks.com)
I found to save the data that importdata is a bit faster than readmatrix , I leave it to you to choose the best option;
clc
clearvars
% reading of data txt files
Folder = cd;
FileList = dir (fullfile(Folder, 'Path1_Step_*.txt'));
FileList_sorted = natsortfiles({FileList.name}); % sort file names into order
M = numel (FileList_sorted);
for iFile = 1:numel(FileList)
FileName = FileList_sorted{iFile};
FileNamePath = fullfile(Folder, FileName);
% load the data : choose one or the other option
tic
data{iFile} = importdata(FileNamePath); % faster
toc
tic
s{iFile} = readmatrix (FileNamePath); % slower
toc
end
12 Commenti
Sideris Tzid
il 18 Nov 2021
Modificato: Sideris Tzid
il 18 Nov 2021
I'm sorry for my english.
Ummm actually I fixed the "last text" issue.
The problem that remains is that I have a folder which looks like this
each one of the subfolders has its own subfolders and so on.
The script that I'm running at the moment is :
clc
clearvars
Folder = 'C:\Users\sideris\Desktop\folder example';
FileList = dir (fullfile(Folder, '*.txt'));
FileList_sorted = natsortfiles({FileList.name}); % sort file names into order
M = numel (FileList_sorted);
for iFile = 1:M
FileName = FileList_sorted{iFile};
FileNamePath = fullfile(Folder,FileName);
tic
s{iFile} = readmatrix (FileNamePath);
toc
data_out = s{iFile}*0.0001;
filename_out = Folder+"\"+[FileName(1:length(FileName)-4) '_out.txt'];
writematrix(data_out, filename_out,"Delimiter","tab");
end
That script only works if all my text files are in the same folder. Is there any way to make that script read all the txt files from every subfolder?
Mathieu NOE
il 18 Nov 2021
hello
look there and see code provided by ImageAnalyst
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Startup and Shutdown in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!