MATLAB:从 tex 文件读取 space 分隔的浮点值

MATLAB: Reading space separated float values from tex file

我正在使用 MATLAB 的 textscan function 读取文本文件。 这里的问题是 value 中没有任何内容被读取,因为浮点数用三个空格分隔,我在 MATLAB 编程方面还很陌生,无法使用一些有效的语法。我当前的代码如下:

代码:

values = textscan(input_file, '%f   %f   %f   %f   %f\n %*[^\n]');

输入文件遵循以下格式:

文件:

0.781844   952.962130   2251.430836   3412.734125   4456.016362
0.788094   983.834855   2228.432996   3196.415590   4378.885466
0.794344   967.653718   2200.798973   3119.844502   4374.097695

如果浮点值是 # 分隔的,那么下面的语句可以正常工作:

values = textscan(input_file, '%f#%f#%f#%f#%f\n %*[^\n]');

除了token化还有什么解决办法吗?

如果您不必使用 textscan,您可以使用 importdata。在那里您可以将分隔符指定为参数。 文档 http://se.mathworks.com/help/matlab/ref/importdata.html

代码示例

filename = 'myfile01.txt';
delimiterIn = '   ';
A = importdata(filename,delimiterIn);

您需要指定一个分隔符,您还应该激活 MultipleDelimsAsOne 以便将重复的 space 视为单个分隔符:

value = textscan(input_file, '%f   %f   %f   %f   %f \n ','Delimiter',' ','MultipleDelimsAsOne',1);

如果需要,您还可以同时指定多个分隔符:

del = {';',' '};