Reading different lines with different numbers of data

1 view (last 30 days)
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

Accepted Answer

meghannmarie
meghannmarie on 4 Oct 2019
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);

More Answers (1)

Sanwar Ahmad
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

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!