MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 求助fscanf命令的读取格式 (https://www.labfans.com/bbs/showthread.php?t=13135)

fengwei.igg 2011-04-11 05:11

求助fscanf命令的读取格式
 
我要读取一个80个连续字符组成的共20个正整数(4个字符一个这个整数),
比如:
(1)新建一个text.txt文档,里面有一行数据如下:

11371110107710401008 989 984 997102610661120118612651345141614691504152415381559

包括空格一共80个字符。正确的结果应该是以下20个整数:
1137
1110
1077
1040
1008
989
984
997
1026
1066
1120
1186
1265
1345
1416
1469
1504
1524
1538
1559
原始数据中989、984和997前面有一个空格。
(2)我的代码是
fid=fopen('text.txt','r');
idat(1:20) = fscanf(fid,'%4d',[1 20])
我的结果是:
1137
1110
1077
1040
1008
989
984
9971
261
661
1201
1861
2651
3451
4161
4691
5041
5241
5381
559

问题是读到997就不对了,我的数据很多,发现有的读的对,有的不对。
请问谁可以帮我解决一下。谢谢

fengwei.igg 2011-04-11 16:41

回复: 求助fscanf命令的读取格式
 
因为数据量很大,最好直接读取为整数,而不是字符转数字。谢谢。

libralibra 2011-04-12 02:38

回复: 求助fscanf命令的读取格式
 
除非让写数据的人给你每个数据加个空格,就只能str2num了
奇怪,怎么会把数据连着写入txt?

[font=Consolas][u]Matlab语言[/u]:
[color=#000000]fid[/color] [color=#000000]=[/color] [color=#000000]fopen[/color]([color=#0000ff]'test.txt'[/color][color=#000000],[/color][color=#0000ff]'r'[/color]);
[color=#000000]c[/color] [color=#000000]=[/color] [color=#000000]fgetl[/color]([color=#000000]fid[/color]);
[color=#000000]nums[/color] [color=#000000]=[/color] [color=#000000]zeros[/color]([color=#000000]1[/color][color=#000000],[/color][color=#000000]20[/color]);
[color=#000080]for[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#000000]1[/color][color=#000000]:[/color][color=#000000]20[/color]
[color=#000000]nums[/color]([color=#000000]i[/color]) [color=#000000]=[/color] [color=#000000]str2double[/color]([color=#000000]c[/color](([color=#000000]i[/color][color=#000000]-[/color][color=#000000]1[/color])[color=#000000]*[/color][color=#000000]4[/color][color=#000000]+[/color][color=#000000]1[/color][color=#000000]:[/color][color=#000000]i[/color][color=#000000]*[/color][color=#000000]4[/color]));
[color=#000080]end[/color]
[color=#000000]nums[/color][color=#000000]'[/color]
[/font]

结果

[font=Consolas][u]Matlab语言[/u]:
[color=#000000]ans[/color] [color=#000000]=[/color]
[color=#000000] 1137[/color]
[color=#000000] 1110[/color]
[color=#000000] 1077[/color]
[color=#000000] 1040[/color]
[color=#000000] 1008[/color]
[color=#000000] 989[/color]
[color=#000000] 984[/color]
[color=#000000] 997[/color]
[color=#000000] 1026[/color]
[color=#000000] 1066[/color]
[color=#000000] 1120[/color]
[color=#000000] 1186[/color]
[color=#000000] 1265[/color]
[color=#000000] 1345[/color]
[color=#000000] 1416[/color]
[color=#000000] 1469[/color]
[color=#000000] 1504[/color]
[color=#000000] 1524[/color]
[color=#000000] 1538[/color]
[color=#000000] 1559[/color]
[/font]

sollen 2011-05-02 19:03

回复: 求助fscanf命令的读取格式
 
我也遇到一个问题就是有两个字符串
a='0.125 0.352 0.254 0.362 0.589 0.547' ,
b='0.254 0.478 0.569 0.985 0.685 0.784'
希望转换为数组
a=[0.125 0.352 0.254 0.362 0.589 0.547],
b=[0.254 0.478 0.569 0.985 0.685 0.784]
然后相加
望各位赐教


所有时间均为北京时间。现在的时间是 11:27

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.