Importing multiple .dat files in MATLAB

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 Comments

Each file contains three blocks of data
  • Offset
  • Scaling Factor
  • Data
together with some header information.
What should be store in variables?
I need only the data.!which should include time , mass flow, screw speed,feed factor... till batch weight.!Open the file in delimited mode. you can see the data in attached file, which i want. thanks in advance
Don't you need the start time, e.g.
Start Data: 9/12/2016 7:46:30 PM 552 ms
If it is there its good, otherwise it is fine.

Sign in to comment.

Answers (2)

KSSV
KSSV on 11 Jan 2018
Edited: KSSV on 11 Jan 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 Comments

It does not import data..! I want to import 1 .dat file as a cell array..! Thanks for your help.!
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.

Sign in to comment.

per isakson
per isakson on 11 Jan 2018
Edited: per isakson on 12 Jan 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 Comments

did not get
out = cssm( 'h:\m\cssm\trial*.dat' )
out =
1x5 struct array with fields:
name
time
colhead
data
this part.?
per isakson
per isakson on 11 Jan 2018
Edited: per isakson on 11 Jan 2018
Do you know how to create and use a Matlab function?
Do you know Matlab stuctures?

Sign in to comment.

Categories

Asked:

on 11 Jan 2018

Edited:

on 12 Jan 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!