How to use textscan from the middle of a file.

2 views (last 30 days)
Hi. I am not very used to textscan and I really do not understand the help text. I have a textfile with A lot of text before the actuall data starts: " HL) [EOH] [BOD] 20111006 0:00,1210,134,98,984,7.83,235,2.47," etcetra with more columns. 20111006 0:10,1209,135,98,989,5.83,234,6.47," is next row and so on.
How can I with textscan only get the time in the beginning and remove all text before data starts, and remove all data after the time.
Any suggestions?
Thank you!

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 23 Nov 2011
[EDIT]
for the case when nameyourfile.txt contains data in the form:
'20111006 0:00,1210,134,98,984,7.83,235,2.47'
'20111006 0:10,1209,135,98,989,5.83,234,6.47'
fid = fopen('w3.txt');
d = textscan(fid,'%8s %5s %*s');
fclose(fid);
out0 = [d{:}];
t = cellfun(@(x)strcmp(x(end),','),out0(:,2));
out0(t,2) = cellfun(@(x)['0' x(1:end-1)],out0(t,2),'un',0);
out = arrayfun(@(x)[out0{x,:}],(1:size(out0,1))','un',0);
  2 Comments
Fredrik
Fredrik on 23 Nov 2011
That seems to help. I did though lie a little bit. The rows before my start is always 29 and some of them have more letters than just [EOH], forexample one line is" Data field 11,17,23,29,35,41,47,53,59,65,71,77,83,89,95,101,107,113,119,125,131,137,143,149,155,161,167,173,185,191: Quality(S/N*10)(LL to HL)"
So for some reason, not all the text before my actual data is removed...
Fredrik
Fredrik on 23 Nov 2011
I managed to fix it. Thank you for your help!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!