I am reading a text file 'mytext.text' in matlab. Data file looks like:
1 -4436.6910 415.1843 -3019.7497 1,3,4,5,21,23
2 -4366.4541 1353.9975 -3085.1166 1,3,4,23
....
I don't know the length of Col5. How can I read it in matlab?
fid=fopen( 'mytext.text','r');
Grdata = textscan(fid, '%d %f %f %f (Col 5 what should be)% This line is
pr开发者_开发知识库oblem%
fclose(fid);
Any help.
One possibility is to read the last column as string, then convert it to numbers afterward.
fid = fopen('file.dat','r');
C = textscan(fid, '%f %f %f %f %s', ...
'Delimiter',' ', 'MultipleDelimsAsOne',true, 'CollectOutput',true);
fclose(fid);
C = [num2cell(C{1}) cellfun(@str2num, C{2}, 'UniformOutput',false)]
The resulting cell-array:
C =
[1] [-4436.7] [415.18] [-3019.7] [1x6 double]
[2] [-4366.5] [ 1354] [-3085.1] [1x4 double]
with:
>> C{1,end}
ans =
1 3 4 5 21 23
>> C{2,end}
ans =
1 3 4 23
To read a single line do
% Read at most 4 elements
data1234 = fscanf (fid, '%d %f %f %f', 4);
% Read as many elements as possible, stop when no ',' is found
data5 = fscanf (fid, '%d,');
Continue reading lines until you reached the end of the file (save the data from each line before doing that). So you need some loop that continues doing this untill the file ends.
精彩评论