Matlab错误提示:Index exceeds matrix dimensions.怎么弄呢?

filename='brdc0010.09n';%广播星历文件fid=fopen(filename,'r');%文件句柄NavDataMatrix=zeros(1,35)... filename='brdc0010.09n'; %广播星历文件
fid = fopen(filename,'r'); %文件句柄
NavDataMatrix=zeros(1,35); %初始化矩阵
while 1
i=0;
Curline = fgetl(fid); %参考历元第1行
if isempty(Curline)
break;
else
i = str2double(Curline(1:2)); %卫星号
NavDataMatrix( 1) = str2double(Curline(4:5)); %年份
NavDataMatrix( 2) = str2double(Curline(7:8)); %月份
NavDataMatrix( 3) = str2double(Curline(10:11)); %日

以上是部分代码,错误提示:
??? Index exceeds matrix dimensions.
Error in ==> BRDC0000_n at 71
i = str2double(Curline(1:2)); %卫星号

问该怎么弄呢?
展开
 我来答
tianxiawulang
2014-09-06 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2531万
展开全部

没有你的数据文件,不好判断原因。

不过,从程序的逻辑上说,循环体中的if-else是有问题的:变量Curline非空并不代表其长度大于1,而你在else分支中却直接使用了Curline的多个元素。

 

可以猜测的一些状况:

1、某行只有一个字符(例如本来应该是空行的,但有一个空格);

2、fgetl到达文件结尾,会返回-1。

这类情况都会导致你遇到的数组越界问题。

 

修改建议:

确保不出错的做法是,把

 if isempty(Curline)

改成

 if length(Curline) >= 11

其中的数字11根据需要改成你在else分支中需要用到的长度。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式