MATLAB Answers

How to read data from txt file and to create a 2D matrix?

115 views (last 30 days)
Novice Geek
Novice Geek on 13 Feb 2014
Commented: Novice Geek on 13 Feb 2014
I am writing a function which reads a text file with some header information in the first 10 lines and then the actual data starts. Here is how the file looks:
Line 1 to
.....
Line 10 (header information)
0 0 4.169080e+000
1 0 6.391669e+000
2 0 6.391669e+000
.
.
.
511 0 9.922547e+000
0 1 5.268026e+000
1 1 5.268026e+000
.
.
.
511 511 9.922547e+000
I have extracted information from the lines which are part of the header. Line 11 onwards the line format is:
x y value
I want to read all these lines one by one (line 11 onwards) and form a 2D matrix(dimensions: 511 X 511) of the value column so that later I can generate an image using this (basically using squeeze() and imshow() functions). Can someone help me how I organize this in a matrix? I am trying to use a yLoop and a nested xLoop but it is not working.

  0 Comments

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 13 Feb 2014
Edited: Andrei Bobrov on 13 Feb 2014
f = fopen('yourtextfile.txt');
c = textscan(f,'%d %d %f','HeaderLines',10,'CollectOutput',1);
fclose(f);
out = accumarray(c{1}+1,c{2});

  3 Comments

Novice Geek
Novice Geek on 13 Feb 2014
I tried to customize this according to my file. Here is the code: lineCount=10;
for lineCount=10:(xDimensions*yDimensions)
c = textscan(line,'%d %d %f','HeaderLines',3,'CollectOutput',1);
end
size(c)
out = accumarray(c{:})
The size of c comes of to be 1 2 and out returns []. Is there something wrong which I am doing?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!