MATLAB: Import file with both text and numbers using texscan

textscan

Hi,
I am trying to import a .txt file (actually many files) that has 2 header lines, and then a combination and text and numbers. I actually don't care about the header lines. What I do care for are the single number after the S (i.e. the Description), and the following number (Position)
I tried using textscan and looked at the help and some of the previous posts, however, I can't make it work.
Here some of my code:
fileID = fopen('P35_TMS3_Control_VTX_markers.txt');
C_data0 = textscan(fileID, '%s %s %d8 %f %f %s');
fclose(fileID);
Thanks so much for your Help!!
Here the first few lines of the txt file (There's actually no empty lines, but without pressing enter after each line, this message would have looked strange):
—————————————————————————————-
Sampling rate: 1024Hz, SamplingInterval: 0.9765625ms
Type, Description, Position, Length, Channel
Stimulus, S 3, 5333, 1, All
Stimulus, S 1, 9441, 1, All
Stimulus, S 3, 12526, 1, All
Stimulus, S 2, 15610, 1, All
Stimulus, S 3, 24140, 1, All
Stimulus, S 2, 27934, 1, All
Stimulus, S 3, 31019, 1, All

Best Answer

The problem is that space is used as delimiter between the second and third column. Your format string, '%s %s %d8 %f %f %s', indicates six columns. However, the header says five columns.
See the documentation on textscan.
Try
>> cac = cssm()
cac =
{7x1 cell} {7x1 cell} [7x1 double] [7x1 double] [7x1 double] {7x1 cell}
>> cac{2}
ans =
'S'
'S'
'S'
'S'
'S'
'S'
'S'
>>
where
function cac = cssm()
fid = fopen('cssm.txt');
cac = textscan( fid, '%s%s%f%f%f%s', 'Delimiter', ', ' ...
, 'Headerlines', 2, 'MultipleDelimsAsOne', true );
fclose(fid);
end
and where cssm.txt contains
Sampling rate: 1024Hz, SamplingInterval: 0.9765625ms
Type, Description, Position, Length, Channel
Stimulus, S 3, 5333, 1, All
Stimulus, S 1, 9441, 1, All
Stimulus, S 3, 12526, 1, All
Stimulus, S 2, 15610, 1, All
Stimulus, S 3, 24140, 1, All
Stimulus, S 2, 27934, 1, All
Stimulus, S 3, 31019, 1, All
.
Or five columns
>> cac = cssm()
cac =
{7x1 cell} {7x1 cell} [7x1 double] [7x1 double] {7x1 cell}
>> cac{2}
ans =
'S 3'
'S 1'
'S 3'
'S 2'
'S 3'
'S 2'
'S 3'
>>
where
function cac = cssm()
fid = fopen('cssm.txt');
cac = textscan( fid, '%s%s%f%f%s', 'Delimiter', ',', 'Headerlines', 2 );
fclose(fid);
end
Related Question