want to skip the text lines in a file

1 回表示 (過去 30 日間)
Moon Datta
Moon Datta 2012 年 11 月 2 日
コメント済み: SYED AZHAR 2018 年 2 月 14 日
I have a text file in which first few lines are text. after than the numeric data is there. I want to skip the text lines.The number of text line is also not fixed. But data always start after the string "BEGIN DATA". I have tried but I am not getting any way to read the numeric data ignoring the text lines. my data file looks like
"gdeudfghdjcklkscdjdjljmdxsjdjmjmdjdckdckshfihsklkdkshncfsdjgbfsdgfvdefhvdfjcs
klhnfcjksdzhbsfvbhdslhfc.siafslfkdl;s
hfcsddjkhfcsjldifgdsfgdrjlsjfkldjksdfgvjdsgvbjdshngffgksl
dsghbfvdjkshghrjgujskdhna,h
BEGIN DATA
1
5
2
3
6
74
5
8
6
.
.
I need only
1
5
2
3
6
74
5
8
6
.
.
in a double
Thanks in advance

採用された回答

Andrei Bobrov
Andrei Bobrov 2012 年 11 月 2 日
編集済み: Andrei Bobrov 2012 年 11 月 2 日
f1 = fopen('test2.txt'); % your data in file test2.txt
c = textscan(f1,'%s','Delimiter','\n');
fclose(f1);
out = str2double(c{1}(find(strcmp(c{1},'BEGIN DATA'))+1:end));
out = out(~isnan(out));
or
out = regexp(c{1},'^\d*$','match');
out = str2double(cat(1,out{~cellfun(@isempty,out)}));
or
out = str2double(c{1}(cellfun(@(y)all(~isletter(y))&~isempty(y),c{1})));
  4 件のコメント
Moon Datta
Moon Datta 2012 年 11 月 2 日
編集済み: Moon Datta 2012 年 11 月 2 日
I am not understanding what is corrected. actually I need in this way
It will ask me to give the input
I shall give the input
then the program will run
it will give me result
SYED AZHAR
SYED AZHAR 2018 年 2 月 14 日
Go for Gui Interfacing

サインインしてコメントする。

その他の回答 (1 件)

Jan
Jan 2012 年 11 月 2 日
編集済み: Jan 2012 年 11 月 2 日
Alternatively:
DataStr = fileread('test2.txt');
Key = 'BEGIN DATA';
Index = strfind(DataStr, Key);
Value = sscanf(DataStr(Index + length(Key) + 1), '%g ');

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by