MATLAB Answers

0

Reading different lines with different numbers of data

Asked by Sanwar Ahmad on 4 Oct 2019
Latest activity Answered by Sanwar Ahmad on 4 Oct 2019
Hi
I have the following file where the data are organised in the following way:
$Nodes
1 16 0 1
146
9.616887654983829 -2.74143608924586 3.7
1 17 0 4
147
148
149
150
9.736663950053746 2.27977523535189 4.38
9.736663950053746 2.27977523535189 5.06
9.736663950053746 2.27977523535189 5.74
9.736663950053746 2.27977523535189 6.42
$EndNodes
So, I want to read this filename.txt file, and store the data in a matrix of size (*, 3). The three numbers in bold will form the 3 columns in the matrix.
How can I do that? Thanks in Advance.
Sanwar

  0 Comments

Sign in to comment.

Tags

2 Answers

Answer by meghannmarie on 4 Oct 2019
 Accepted Answer

This code is assuming that the only lines that have 3 fields is your data:
file = 'filename.txt';
fileID = fopen(file);
data = double.empty(0,3);
line_ex = 1;
while all(line_ex ~= -1)
line_ex = fgetl(fileID)
if ischar(line_ex)
line_ex = str2num(line_ex);
if size(line_ex,2) == 3
data(end + 1,:) = line_ex;
end
end
end
fclose(fileID);

  0 Comments

Sign in to comment.


Answer by Sanwar Ahmad on 4 Oct 2019

Thanks, meghannmarie! I just needed the following modification.
file = 'filename.txt';
fileID = fopen(file);
data = double.empty(0,3);
line_ex = 1;
while all(line_ex ~= -1)
line_ex = fgetl(fileID)
if ischar(line_ex)
line_ex = sscanf(line_ex,'%f');
if length(line_ex) == 3
% line_ex = str2num(line_ex);
% if size(line_ex,2) == 3
data(end + 1,:) = line_ex;
end
end
end
fclose(fileID);
Sanwar

  0 Comments

Sign in to comment.