Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-05-27, 15:36   #1
jorad
初级会员
 
注册日期: 2008-05-27
年龄: 42
帖子: 4
声望力: 0
jorad 正向着好的方向发展
警告 程序中的Index exceeds matrix dimensions.问题

本人编写了一个GPS星历导航文件的读取程序,可是在运行的时候出现了Index exceeds matrix dimensions.的问题,检查了半天也没发现错在哪儿,求高手帮忙。
程序如下:

function loadrinexn(filename)
%LOADRINEXN Satellite ephemeris (Navigation message) data
% in RINEX2 format. Load the data from a user-specified
% ASCII text file in RINEX2 format. The data are
% maintained as global variables.
%
% loadrinexn(filename)
%
% INPUTS
% filename = Name of the ASCII text file containing the
% RINEX2-formatted Navigation message data
% (NOTE: make sure to put the name in single
% quotation marks (e.g., loadrinexn('stkr2581.02n')

%
% Copyright (c) 2002-2003 Michael S. Braasch / GPSoft LLC
%
global ALPHA BETA UTC_A0 UTC_A1 UTC_TOT UTC_WN LEAP_SEC
global SV_ID_VEC TOC_YEAR TOC_MONTH TOC_DAY TOC_HOUR
global TOC_MINUTE TOC_SEC AF0 AF1 AF2
global IODE CRS DELTAN MZERO CUC ECCEN CUS SQRTSMA
global TOE CIC OMEGAZERO CIS IZERO CRC ARGPERI OMEGADOT
global IDOT CODES_ON_L2 TOE_WN L2_P_FLAG
global URA SV_HEALTH TGD IODC TRANS_TIME_OF_MESSAGE
global FIT_INTERVAL SPARE1 SPARE2
%
fid = fopen(filename);
if fid==-1
error('RINEX Navigation message data file not found or permission denied');
end
%
% Pre-load iono model and UTC parameters in case files omit them
ALPHA(1:4) = NaN; BETA(1:4) = NaN;
UTC_A0 = NaN; UTC_A1 = NaN; UTC_TOT = NaN; UTC_WN = NaN;
LEAP_SEC = NaN; TOE(1:32) = -9e99;
%
disp('Loading RINEX2 Navigation Data File - Please Be Patient')
% Parse header
while 1 % this is the numeral '1'
line = fgetl(fid);
if line(61:73) == 'END OF HEADER',
break
end
if line(61:69) == 'ION ALPHA',
ALPHA(1) = str2num(line(3:14));
ALPHA(2) = str2num(line(15:26));
ALPHA(3) = str2num(line(27:38));
ALPHA(4) = str2num(line(39:50));
end
if line(61:68) == 'ION BETA',
BETA(1) = str2num(line(3:14));
BETA(2) = str2num(line(15:26));
BETA(3) = str2num(line(27:38));
BETA(4) = str2num(line(39:50));
end
if line(61:69) == 'DELTA-UTC',
UTC_A0 = str2num(line(4:23));
UTC_A1 = str2num(line(24:42));
UTC_TOT = str2num(line(43:51));
UTC_WN = str2num(line(52:60));
end
if line(61:72) == 'LEAP SECONDS',
LEAP_SEC = str2num(line(1:6));
end
end
%
% Initialize vector of Satellite ID's
SV_ID_VEC(1:32) = 0;
% Loop through the file
while 1 % this is the numeral '1'
%
line = fgetl(fid);
if ~ischar(line), break, end
%
svnum = str2num(line(1:2));
SV_ID_VEC(svnum) = 1;
TOC_YEAR(svnum) = str2num(line(4:5));
TOC_MONTH(svnum) = str2num(line(7:8));
TOC_DAY(svnum) = str2num(line(10:11));
TOC_HOUR(svnum) = str2num(line(13:14));
TOC_MINUTE(svnum) = str2num(line(16:17));
TOC_SEC(svnum) = str2num(line(18:22));
AF0(svnum) = str2num(line(23:41));
AF1(svnum) = str2num(line(42:60));
AF2(svnum) = str2num(line(61:79));

line = fgetl(fid);
IODE(svnum) = str2num(line(4:22));
CRS(svnum) = str2num(line(23:41));
DELTAN(svnum) = str2num(line(42:60));
MZERO(svnum) = str2num(line(61:79));

line = fgetl(fid);
CUC(svnum) = str2num(line(4:22));
ECCEN(svnum) = str2num(line(23:41));
CUS(svnum) = str2num(line(42:60));
SQRTSMA(svnum) = str2num(line(61:79));

line = fgetl(fid);
TOE(svnum) = str2num(line(4:22));
CIC(svnum) = str2num(line(23:41));
OMEGAZERO(svnum) = str2num(line(42:60));
CIS(svnum) = str2num(line(61:79));

line = fgetl(fid);
IZERO(svnum) = str2num(line(4:22));
CRC(svnum) = str2num(line(23:41));
ARGPERI(svnum) = str2num(line(42:60));
OMEGADOT(svnum) = str2num(line(61:79));

line = fgetl(fid);
IDOT(svnum) = str2num(line(4:22));
CODES_ON_L2(svnum) = str2num(line(23:41));
TOE_WN(svnum) = str2num(line(42:60));
L2_P_FLAG(svnum) = str2num(line(61:79));

line = fgetl(fid);
URA(svnum) = str2num(line(4:22));
SV_HEALTH(svnum) = str2num(line(23:41));
TGD(svnum) = str2num(line(42:60));
IODC(svnum) = str2num(line(61:79));

line = fgetl(fid);
TRANS_TIME_OF_MESSAGE(svnum) = str2num(line(4:22));
FIT_INTERVAL(svnum) = str2num(line(23:41));
SPARE1(svnum) = str2num(line(42:60));
SPARE2(svnum) = str2num(line(61:79));
end

运行后的反应是:

>> loadrinexn('base322a.05N')
Loading RINEX2 Navigation Data File - Please Be Patient
??? Index exceeds matrix dimensions.

Error in ==> loadrinexn at 41
if line(61:73) == 'END OF HEADER',
__________________
endless
jorad 当前离线   回复时引用此帖
回复

主题工具
显示模式

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

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


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]SIFT算法的MATLAB实现 Wenger MATLAB论坛 0 2008-05-01 20:52
matlab解一个复杂的方程组 danrushui MATLAB论坛 2 2008-04-13 22:22


所有时间均为北京时间。现在的时间是 20:09


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