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 = {';',' '};
我正在使用 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 = {';',' '};