Read file

20 次查看(过去 30 天)
Andrea Ferrari
Andrea Ferrari 2011-2-15
Hi all,
probably a very simple question..I need to read a text file consisting of a list of vectors with this format:
skip the first 22 line and then (x y z) (x y z) (x y z) ... (x y z)
there are 263853 line. How can i do that??
thanks for any help
andrea

回答(3 个)

Jan
Jan 2011-2-15
The description of the file format is not exact enough. I'll show you a method for a well defined format and I assume you can adjust it to your needs:
I assume the file looks like this:
Header line 1
...
Header line 22
(0.1 0.2 0.3)
(0.17 19.5 231)
... <263853 of such lines>
This can be solved by TEXTSCAN or more low-levelish:
FID = fopen(FileName, 'r');
if FID <= 0, error('Cannot open file'); end
for iSkip = 1:22
dummy = fgetl(FID);
end
Data = fscanf(FID, '(%g %g %g)\n');
Data = transpose(reshape(Data, 3, []));
fclose(FID);
  2 个评论
Andrea Ferrari
Andrea Ferrari 2011-2-15
thanks Jan. It runs
andrea
Jan
Jan 2011-2-15
Thanking is very polite. Accpeting an answer is helpful for others in addition.

请先登录,再进行评论。


Andrea Ferrari
Andrea Ferrari 2011-2-15
sorry
all vector are in column (not along a line).
andrea

Matt Tearle
Matt Tearle 2011-2-15
Or, using textscan (as Jan mentioned):
FID = fopen(FileName, 'r');
if FID <= 0, error('Cannot open file'); end
Data = textscan(FID, '(%f %f %f)','headerlines',22);
x = Data{1};
y = Data{2};
z = Data{3};
fclose(FID);

类别

Help CenterFile Exchange 中查找有关 Text Data Preparation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by