Read row x to row y in a textfile

1 回表示 (過去 30 日間)
Marthe Fenne Vestly
Marthe Fenne Vestly 2017 年 10 月 27 日
コメント済み: Cedric 2017 年 11 月 2 日
Hi,
I have a very long textfile that I want to read the lines from 32781 to 32894, excluding the lines above and below, and store the lines in a new text files. I have made this code, but it does not work.
The txt-file have some lines with two columns and other with three and four. The lines I am interested in only have two columns.
[T1,PSA1]=textread('FFC_M7_1.txt', '%f %f','headerlines',32781);
[T,PSA] = [T1(32782:32894), PSA1(32782:32894)]
f1=fopen('FFC_M7_1_test.txt','w');
for i= 1:length(T)
fprintf(f1,'%11.4f %11.4f\n',[T(i) PSA(i)]);
end
fclose(f1);
This message appear when I try to run the code:
Error using dataread
Trouble reading floating point number from file (row 114, field 1) ==> Frequency (Hz) A
Error in textread (line 174)
[varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
Error in WritePSA (line 1)
[T1,PSA1]=textread('FFC_M7_1.txt', '%f %f','headerlines',32781);
Does anyone know how to do this?
Thanks, Marthe

採用された回答

Cedric
Cedric 2017 年 10 月 27 日
編集済み: Cedric 2017 年 10 月 27 日
Is the following working?
[T1,PSA1]=textread('FFC_M7_1.txt', '%f %f %*s %*s','headerlines',32781);
or
content = fileread( 'FFC_M7_1_test.txt' ) ;
lineStarts = [0, strfind( content, sprintf('\n') )] + 1 ;
block = content(lineStarts(32782) : (lineStarts(32895)-1)) ;
data = reshape( str2double( regexp( block, '[\d\.\-]+', 'match' )), 2, [] ).' ;
I cannot test right now though.
  14 件のコメント
Marthe Fenne Vestly
Marthe Fenne Vestly 2017 年 11 月 2 日
You are right, I was comparing two different files. Sorry about that, and thanks a lot.
Cedric
Cedric 2017 年 11 月 2 日
My pleasure!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLow-Level File I/O についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by