声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2122|回复: 10

[编程技巧] 请教高手:用MATLAB读数据文件的程序,有问题,怎样改啊?

[复制链接]
发表于 2006-11-9 09:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function x=readata(file1)
%Read data from some file !
% data file's name.
c='d:\dat\'; %为数据文件的路径名
c(8:12)=file1;%为数据文件的文件名(注意长度)
c(13:16)='.fjd';%为数据文件的后缀名
fid=fopen(c,'r');
a=fscanf(fid,'%f %f\n');
fclose(fid);
for n=1:500
    x(n)=a(2*n-1)+i*a(2*n);
end;

%这个文件运行时,出现错误,我无法通过它读文件,请高手指点,如何修改!先谢过了!
回复
分享到:

使用道具 举报

发表于 2006-11-9 11:07 | 显示全部楼层
你最好能给出错误提示!
发表于 2006-11-9 11:10 | 显示全部楼层
把file1给一下,同时如楼上,给一下错误信息
 楼主| 发表于 2006-11-9 16:24 | 显示全部楼层

我要读的文件是后缀名为BIN 的文件1a0

输入
x=readata('1a0.bin') 后,出现的错误如下:
??? In an assignment  A(:) = B, the number of elements in A and B
must be the same.

Error in ==> readata at 5
c(8:12)=file1;%为数据文件的文件名(注意长度)
 楼主| 发表于 2006-11-9 16:27 | 显示全部楼层

忘记说明了,这个源程序是我按照书上写的

M文件就无法通过编译,错误如下:

Error in ==> readata at 5
c(8:12)=file1;%为数据文件的文件名(注意长度)

请高手帮忙支招了
发表于 2006-11-10 10:02 | 显示全部楼层
原帖由 houxiuli_802 于 2006-11-9 16:24 发表
输入
x=readata('1a0.bin') 后,出现的错误如下:
??? In an assignment  A(:) = B, the number of elements in A and B
must be the same.

Error in ==> readata at 5
c(8:12)=file1;%为数据文件的文件 ...



c(8:12)这是5个字符,1a0只是三个字符

修改一下
c(8:10)=file1;%为数据文件的文件名(注意长度)
c(11:14)='.fjd';%为数据文件的后缀名
 楼主| 发表于 2006-11-13 20:35 | 显示全部楼层

楼上好,我按你说的改了之后还是不行啊!怎么办?

首先,我把原来的c(8:12)=file1  改为  c(8:10)=file1 ;
                        把   c(13:16)='.fjd'改为c(11:13)=file1;
即满足了我要读的文件的 文件名和后缀名长度,可是调用x=readata('1a0.bin') 后,出现的错误还是和以前一样:
??? In an assignment  A(:) = B, the number of elements in A and B
must be the same.

Error in ==> readata at 5
c(8:10)=file1;%为数据文件的文件名(注意长度)

然后,我又把程序复原,尝试了打开text2.txt 文本文件。输入以下命令,结果显示的错误如下:

x=readata('text2.txt');
??? In an assignment  A(:) = B, the number of elements in A and B
must be the same.

Error in ==> readata at 5
c(8:12)=file1;%为数据文件的文件名(注意长度)


到底是什么问题呢?大家帮忙想想办法啊!
发表于 2006-11-13 20:49 | 显示全部楼层
原帖由 houxiuli_802 于 2006-11-13 20:35 发表
首先,我把原来的c(8:12)=file1  改为  c(8:10)=file1 ;
                        把   c(13:16)='.fjd'改为c(11:13)=file1;
即满足了我要读的文件的 文件名和后缀名长度,可是调用x=readata('1a0.bin') 后, ...


c = ['d:\dat\', file1,'.fjd']

评分

1

查看全部评分

发表于 2006-11-13 22:17 | 显示全部楼层

呵呵这么多人回答这个问题啊,怎么不会使用help呢

 楼主| 发表于 2006-11-14 15:27 | 显示全部楼层

eight的意思是?

是我文件存放路径不对吗? 我把要读的文件,存放到d:\dat目录下,可仍是读不出来啊?错误和原来一样。帮助里也没有关于读这种文件的信息啊,我只好求助于热心的版友了。
发表于 2006-11-14 15:54 | 显示全部楼层
原帖由 houxiuli_802 于 2006-11-14 15:27 发表
是我文件存放路径不对吗? 我把要读的文件,存放到d:\dat目录下,可仍是读不出来啊?错误和原来一样。帮助里也没有关于读这种文件的信息啊,我只好求助于热心的版友了。



你要读的文件是1a0.bin,那为何要加上.fjd后缀名?

建议在readdata函数中,把第一到第三句删除,即修改后的readdata函数第一句是fopen那句。然后在命令窗口用readdata('d:\dat\1a0.bin')
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 18:30 , Processed in 0.063294 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表