在matlab中读取未格式化元素的行

时间:2016-11-07 07:05:56

标签: matlab fopen textscan

我想读取每行中包含数字的文件。以下是文件格式的示例 -

boundary-points-x: 0.00 5.00
boundary-points-y: 0.00 0.10 0.20 0.30 4.90
boundary-points-z: 0.00 1.00 2.00 3.00 4.00 5.00

文字文本后面的数字是我想要阅读的元素。每行包含不同数量的元素,每行中的元素数可能会因文件而异。因此,不可能使用文本扫描以相同的格式读取。有什么办法可以解决吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用regexp来解析该行:

fid = fopen('/path/to/file.txt', 'r');
line = fgetl(fid);
while ischar(line)
    res = regexp(line, '\s+(\d*\.?\d*)', 'tokens');
    literals = cellfun(@str2double, res);  % you have this line's literals. You decide what to do with them...
    line = fgetl(fid);
end
fclse(fid);

您可以看到here关于正则表达式的解释以及解析您的行如何工作的示例。你也可以在那里玩正则表达式。