Matlab文本可以固定宽度

时间:2013-04-29 10:00:34

标签: matlab textscan

我必须阅读像这样的文件

10001   3          5.0000      30.0         0.0000      25.6         0.0000      10.0
10002   1         25.0000                   0.0000                   4.6887      58.2
10003   5         45.0000      20.0         0.0000                  14.7608          
10004   5         65.0000                   0.0000                   8.8791          
10005   1         85.0000                   0.0000                   6.3128      00.0

文件格式如下'%5i%5i %% 10.4f%8.1f%10.4f%8.1f%10.4f%8.1f'

我正在使用以下代码

n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5i%5i%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);

但我继续收到以下错误

  

???使用==>时出错textscan格式错误的字符串。

我真的无法得到它!

修改

正如答案所说,正确的代码是:

n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);

使用“d”(代表十进制)而不是“i”

1 个答案:

答案 0 :(得分:2)

问题是格式说明符itextscan无法识别。如果你想表示一个整数,你应该使用d。因此,正确的语法是:

n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');