MATLAB: How to read text file into formatted array

datetime data format

Hi
I have a text file which contains many rows of this shape
'0862;1;10/09/2002;09:15:59;23.845089;38.018470;486253.80;4207588.10'
I need to read each line in different cells. each cell contains data between ";" and the third and forth one are date and time while others are double numbers.
would you please help me to do so

Best Answer

Here is a function, which does what I believe is what you want. The third column of out is a serial date number.
>> out = cssm('cssm.txt')
out =
1.0e+06 *
0.0009 0.0000 0.7315 0.0000 0.0000 0.4863 4.2076
0.0009 0.0000 0.7315 0.0000 0.0000 0.4863 4.2076
0.0009 0.0000 0.7315 0.0000 0.0000 0.4863 4.2076
>> datestr( out(:,3), 31 )
ans =
2002-10-09 09:15:59
2002-10-09 09:15:59
2002-10-09 09:15:59
where
function out = cssm( filespec )
fid = fopen( filespec );
cac = textscan( fid, '%f%f%s%s%f%f%f%f' ...
, 'Delimiter',';', 'CollectOutput',true );
fclose( fid );
str = cell2mat(cac{2});
sdn = datenum( str, 'mm/dd/yyyyHH:MM:SS');
out = cat( 2, cac{1}, sdn, cac{3} );
end
and where cssm.txt contains
0862;1;10/09/2002;09:15:59;23.845089;38.018470;486253.80;4207588.10
0862;1;10/09/2002;09:15:59;23.845089;38.018470;486253.80;4207588.10
0862;1;10/09/2002;09:15:59;23.845089;38.018470;486253.80;4207588.10
Related Question