Reading different lines with different numbers of data

1 次查看(过去 30 天)
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

采纳的回答

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

更多回答(1 个)

Sanwar Ahmad
Sanwar Ahmad 2019-10-4
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

类别

Help CenterFile Exchange 中查找有关 Standard File Formats 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by