Unable to load multiple mat files
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, I have a bunch of mat files as shown below. I feel I've done something similar before but now this is driving me slightly crazy...
I'm trying to load the data from the multiple mat files into a structure or any other easily indexable/accessible format.

This is my code
myFolder = 'C:\Users\dbhadra\Desktop\MSD\M150_Actuation_Accuracy\HittechProto3_RawData\output';
theFiles = dir(fullfile(myFolder, '/*M150*.mat'));
S = struct([]);
for i=1:numel(theFiles)
S{i} = load(theFiles(i).name);
end
I keep getting errors, most common being below
Error using load
Unable to read MAT-file
C:\Users\dbhadra\Desktop\MSD\M150_Actuation_Accuracy\HittechProto3_RawData\output\2018-10-25_10-56-15_TEST_20_M150RawData_part1.mat.
Not a binary MAT-file. Try load -ASCII to read as text.
The funny is this seems to work standalone, except not in a loop. Where am I going wrong? Thanks.
0 Kommentare
Antworten (2)
Jan
am 25 Feb. 2022
This does not match:
S = struct([]);
for i=1:numel(theFiles)
S{i} = ...
You define S as a struct, but then you create cell elements. Either use S(i) or initialize S by:
S = cell(1, numel(theFiles));
The path is missing in the load command:
S{i} = load(fullfile(myFolder, theFiles(i).name));
But then the current folder must contain a file with the given name in a not matching format. This is at least strange.
Please openthe file manually and check the format. Are they ASCII-files?
5 Kommentare
Stephen23
am 28 Feb. 2022
"but this contradicts the initial error that we see. "
No, it does not.
The error message states "Not a binary MAT-file."
Your file is a binary file, but that does not mean that it is a MATLAB MAT-file.
Jan
am 1 Mär. 2022
@Deepayan Bhadra: As Stephen said: This is not a binary MAT file. Binary MAT files starts with some readable text like "MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Mon Feb 28 12:42:18 2022" before the binary stuff starts. Your file does not. So the error message is correct.
Which software has created the files?
Stephen23
am 25 Feb. 2022
Bearbeitet: Stephen23
am 26 Feb. 2022
theFiles is already a structure, there is no point in creating another one when you can use theFiles already:
myFolder = 'C:\Users\dbhadra\Desktop\MSD\M150_Actuation_Accuracy\HittechProto3_RawData\output';
theFiles = dir(fullfile(myFolder, '*M150*.mat'));
for k = 1:numel(theFiles)
theFiles(k).data = load(theFiles(i).name);
end
data = [theFiles.data] % optional, assumes all file contain the same variables.
2 Kommentare
Siehe auch
Kategorien
Mehr zu Workspace Variables and MAT Files 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!