登录论坛

查看完整版本 : [MATLAB基础] 求助fscanf命令的读取格式


fengwei.igg
2011-04-11, 05:11
我要读取一个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
因为数据量很大,最好直接读取为整数,而不是字符转数字。谢谢。

libralibra
2011-04-12, 02:38
除非让写数据的人给你每个数据加个空格,就只能str2num了
奇怪,怎么会把数据连着写入txt?

Matlab语言:
fid = fopen('test.txt','r');
c = fgetl(fid);
nums = zeros(1,20);
for i=1:20
nums(i) = str2double(c((i-1)*4+1:i*4));
end
nums'


结果

Matlab语言:
ans =
1137
1110
1077
1040
1008
989
984
997
1026
1066
1120
1186
1265
1345
1416
1469
1504
1524
1538
1559

sollen
2011-05-02, 19:03
我也遇到一个问题就是有两个字符串
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]
然后相加
望各位赐教