Load multiple files one by one into a subfolder or Extract data from strut
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
University
am 19 Okt. 2023
Kommentiert: Walter Roberson
am 19 Okt. 2023
Hi,
How can I load multiple files from a subfolder without merging them into a strut. ?
or
I have a .mat files in a folder I have loaded them using the command below.
matpath = 'C:..\..sol_file\';
matfiles = dir(fullfile(matpath ,'*.mat'));
Please how can I extract the files separately ?
6 Kommentare
Stephen23
am 19 Okt. 2023
Bearbeitet: Stephen23
am 19 Okt. 2023
You can extract the imported file data into its own structure array, which will make the data easier to access. This assumes that each scalar structure in the DATA field has exactly the same fields (which so far you have not told us).
Given your structure S, after the file importing loop do this:
Z = [S.data];
After that you can trivially use indexing to access the data, e.g. for the 2nd file:
S(2).name % filename
Z(2).helloworld % the fields which so far you have not told us what they are called
Z(2).otherfields
Z(2).etcetcetc
Do NOT try to magically create all of that data as separate variables in the workspace. There be dragons.
Akzeptierte Antwort
Voss
am 19 Okt. 2023
matpath = 'C:..\..sol_file\';
matfiles = dir(fullfile(matpath ,'*.mat'));
full_file_names = fullfile(matpath,{matfiles.name});
for n = 1:numel(matfiles)
matfiles(n).data = load(full_file_names{n});
end
Now matfiles(1).data contains the data loaded from the 1st mat-file, matfiles(2).data contains the data loaded from the 2nd mat-file, and so on.
6 Kommentare
Walter Roberson
am 19 Okt. 2023
format long g
val = 0.001
fprintf('%.999g\n', val)
val2 = val * (1-eps)
fprintf('%.999g\n', val2)
MATLAB does not store numeric values in decimal. The closest representable value to 0.001 is the one shown above. Why should it create a variable name xx_001 instead of xx followed by that string of digits?
Notice that val2 displays the same as val, but has a slightly different internal value and is not the closest representable value to 1/1000 (it is the second-closest) . If that were the value in the variable, then should xx_001 still be the created variable or should it be xx followed by that long string of digits for val2 ? What is the rule here for how much values should be rounded off in creating the name of the variable?
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Whos 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!