Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-04-11, 05:11   #1
fengwei.igg
初级会员
 
注册日期: 2011-04-11
帖子: 2
声望力: 0
fengwei.igg 正向着好的方向发展
默认 求助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   #2
fengwei.igg
初级会员
 
注册日期: 2011-04-11
帖子: 2
声望力: 0
fengwei.igg 正向着好的方向发展
默认 回复: 求助fscanf命令的读取格式

因为数据量很大,最好直接读取为整数,而不是字符转数字。谢谢。
fengwei.igg 当前离线   回复时引用此帖
旧 2011-04-12, 02:38   #3
libralibra
初级会员
 
libralibra 的头像
 
注册日期: 2007-12-07
帖子: 22
声望力: 18
libralibra 正向着好的方向发展
默认 回复: 求助fscanf命令的读取格式

除非让写数据的人给你每个数据加个空格,就只能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
__________________
接MATLAB图像处理项目,毕设.也可作vb作业.
QQ: 790404545
libralibra 当前离线   回复时引用此帖
旧 2011-05-02, 19:03   #4
sollen
初级会员
 
注册日期: 2011-05-02
年龄: 34
帖子: 1
声望力: 0
sollen 正向着好的方向发展
默认 回复: 求助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]
然后相加
望各位赐教
sollen 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



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


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