【发布时间】:2013-04-29 10:00:33
【问题描述】:
我必须读取这样的文件
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”
【问题讨论】:
-
您确定文件是固定宽度而不是制表符分隔的吗?也许尝试
dlmread与\t作为分隔符? -
我确定是固定的:我刚刚将它生成为一个字符串。
-
@Dan:不幸的是,它不是
tab-formatted。