Load multiple matlab data files and convert them to text
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ana Gabriela Guedes
am 4 Jul. 2021
Bearbeitet: Image Analyst
am 4 Jul. 2021
Hi!
I have multiple matlab data files with different names (with ECG data from multiple patients) and I want to load them all and convert them to text.
Also, the data is in structure form so I have to do the following for each file:
signal = load('FileName')
data = [signal.val];
writematrix(data,'FileName.txt','Delimiter',',');
How can I do it all at the same time? Thank you a lot in advance :)
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 4 Jul. 2021
Code samples for processing a sequence of files are given in the FAQ:
6 Kommentare
Image Analyst
am 4 Jul. 2021
Bearbeitet: Image Analyst
am 4 Jul. 2021
@Ana Gabriela Guedes, try this:
myFolder = pwd; %'C:\Myfoldersdirectory';
filePattern = fullfile(myFolder, 'EKG*.mat');
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(theFiles(k).folder, baseFileName);
fprintf('Now reading input file : "%s".\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
storedStructure = load(fullFileName);
% See if it has a val field stored in the .mat file.
if ~isfield(storedStructure, 'val')
% Show what fieldnames there are:
fieldnames(storedStructure)
errorMessage = sprintf('Error: no field called "val" in file\n"%s".\n\nSkipping this file.', baseFileName);
uiwait(errordlg(errorMessage));
continue; % Skip to bottom of for loop and continue iterations.
end
data = -storedStructure.val;
fprintf('Now plotting %d values of data.\n', length(data));
plot(data, '-', 'LineWidth', 2);
hold on
% Create the output file name.
[~, baseFileNameNoExt, etc] = fileparts(baseFileName);
fullOutputFileName = fullfile(myFolder, [baseFileNameNoExt, '.txt']);
fprintf('Now writing output file : "%s".\n', fullOutputFileName);
writematrix(data, fullOutputFileName, 'Delimiter', ',');
end
I added some improvments and robustness checks, like printing out informational messages, adding comments, using descriptive variable names, plotting the data, and checking to see if the data is actually in the mat file to begin with. It never hurts to be extra robust.
Weitere Antworten (1)
Sulaymon Eshkabilov
am 4 Jul. 2021
If you are talking about series of files (e.g: P1.txt, P2.txt, ...) to load and convert their contents, then this might be an option:
for ii = 1:numel(Files)
FName = strcat('P', num2str(ii), '.txt');
signal = load(FName)
data = [signal.val];
writematrix(data,'FileName.txt','Delimiter',',', 'WriteMode','append');
end
1 Kommentar
Siehe auch
Kategorien
Mehr zu File Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!