在计算GPS卫星位置时其中有一步:"tk = t - toe”, 这其中的t怎么求得啊?
你先写一个代码计算从t这一天到1980年1月1日经过了多少天,然后再减去周数(WN)*7;然后*24*3600s,再加上小时数*3600s,再加上分钟数跟秒数就差不多了吧
function gpsTime = getGPStime(year,month,day,hour,minute,second)
% getGPStime函数用于求GPS时
% 输入参数为年、月、日、小时、分钟、秒
% 输出结果为GPS时,和GPS周
% 定义每个月份的天数
dinmith = [31 29 31 30 31 30 31 31 30 31 30 31];
if year > 80
year = year +1900;
else if year < 80
year =year + 2000;
end
end
if year < 1981 || month <1 || month > 12 ||day<1 ||day>31
weekno = 0;
end
if month == 1
dayofy = day;
else
dayofy = 0;
for m = 1:month -1
dayofy = dinmith(m)+dayofy;
if m == 2
if mod(year,4) == 0 && mod(year,100)~=0 && mod(year,400) == 0
dayofy = dayofy + 1;
end
end
end
dayofy = dayofy + day;
end
ttlday = 360;
for yr = 1981:year - 1
ttlday = ttlday + 365;
if mod(yr,4)==0 && mod(yr,100)~=0 || mod(yr,400)==0
ttlday = ttlday + 1;
end
end
ttlday = ttlday + dayofy;
weekno = ttlday / 7;
% GPS周数应取整
weekno = floor(weekno);
% GPS周内天数
dayofw = ttlday -7 * weekno;
gpsTime = hour*3600+minute*60+second+dayofw*86400;
end