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)); %卫星号
问该怎么弄呢? 展开
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)); %卫星号
问该怎么弄呢? 展开
展开全部
没有你的数据文件,不好判断原因。
不过,从程序的逻辑上说,循环体中的if-else是有问题的:变量Curline非空并不代表其长度大于1,而你在else分支中却直接使用了Curline的多个元素。
可以猜测的一些状况:
1、某行只有一个字符(例如本来应该是空行的,但有一个空格);
2、fgetl到达文件结尾,会返回-1。
这类情况都会导致你遇到的数组越界问题。
修改建议:
确保不出错的做法是,把
if isempty(Curline)
改成
if length(Curline) >= 11
其中的数字11根据需要改成你在else分支中需要用到的长度。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询