Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-05-27
年龄: 42
帖子: 4
声望力: 0 ![]() |
![]()
本人编写了一个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 ![]() |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-03-28
年龄: 42
帖子: 12
声望力: 18 ![]() |
![]()
你所用的参数超出了数组或是矩阵的维数
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-05-27
年龄: 42
帖子: 4
声望力: 0 ![]() |
![]()
2楼的,你说的我也知道,问题是我并没发现它超过矩阵的维数,希望你们好好看看我的程序给我指正下。
__________________
endless ![]() |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-06-04
年龄: 44
帖子: 16
声望力: 17 ![]() |
![]()
建议楼主调试一下,可以单独运行line(61:73)看看显示什么内容.很可能里面有回车之类的换行符
可以把73改为72或71试试 |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]怎样把excel中的数据导入matlab中 | tian84975322 | MATLAB论坛 | 19 | 2012-04-12 18:29 |
[求助]SIFT算法的MATLAB实现 | Wenger | MATLAB论坛 | 0 | 2008-05-01 20:52 |
BMP图像转换成时间序列 | zlnhappy | MATLAB论坛 | 0 | 2008-04-28 17:53 |
matlab解一个复杂的方程组 | danrushui | MATLAB论坛 | 2 | 2008-04-13 22:22 |
【求助】产生随机数?? | wpy6609 | MATLAB论坛 | 4 | 2007-06-25 22:45 |