- Offset
- Scaling Factor
- Data
Importing multiple .dat files in MATLAB
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have multiple(100-200) .dat files which contain data,when I open them in matlab it opens in import tab. I want to write a generic program so that all data can be accessed from 1 script. I mean all data should be accessible from work-space, and each .dat file could be represented in a cell array.
I have tried to generate a function , from default import function but I cannot do it for 100 files. Uploading 5 dat files for example, if someone could help me write a generic code, for these 5 files, and can be extended to 100 files. Thanks in advance
4 comentarios
per isakson
el 11 de En. de 2018
Don't you need the start time, e.g.
Start Data: 9/12/2016 7:46:30 PM 552 ms
Respuestas (2)
KSSV
el 11 de En. de 2018
Editada: KSSV
el 11 de En. de 2018
datfiles = dir('*.dat') ; % get all dat files in the folder
N = length(Datfiles) ; % total number of files
for i = 1:N % loop for each file
thisfile = datfiles(i).name
% do what you want
end
2 comentarios
KSSV
el 11 de En. de 2018
The above code....give the names of all .dat files.....you need to use a function to load....I have shown only the part of accessing files.
per isakson
el 11 de En. de 2018
Editada: per isakson
el 12 de En. de 2018
Try
>> out = cssm( 'h:\m\cssm\trial*.dat' )
it should return
out =
1x5 struct array with fields:
name
time
colhead
data
where
function out = cssm( glob )
sas = reshape( dir( glob ), 1,[] );
folder = fileparts( glob );
out = struct( 'name', {}, 'time',{}, 'colhead',{}, 'data',{} );
for s = sas % loop over all files
dat.name = s.name;
str = fileread( fullfile( folder, s.name ) );
cac = regexp( str, '(?m)^Start Data:(.+)$', 'tokens', 'once' );
dat.time = strtrim( cac{:} );
cac = textscan( str, '%[^\n]', 1, 'Headerlines',8, 'Delimiter','\n' );
dat.colhead = strsplit( cac{:}{:} );
cac = textscan( str, repmat('%f', size(dat.colhead)) ...
, 'Headerlines',9, 'Collectoutput',true, 'Delimiter','\t' );
dat.data = cac{1};
out = cat( 2, out, dat );
end
end
2 comentarios
per isakson
el 11 de En. de 2018
Editada: per isakson
el 11 de En. de 2018
Do you know how to create and use a Matlab function?
If not, see for example https://matlabacademy.mathworks.com/R2017b/portal.html?course=mlbe#chapter=12&lesson=1§ion=1
Do you know Matlab stuctures?
Ver también
Categorías
Más información sobre Large Files and Big Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!