发明名称 一种快速搜索导航星表的方法
摘要 本发明为一种快速搜索导航星表的方法,包括以下步骤,首先直接利用天球的原始赤经赤纬圈对天区划分,然后根据视轴指向计算星敏感器视场所覆盖区域的赤经赤纬跨度范围,搜索所述赤经赤纬跨度范围内的导航星表,得到在该视场内的导航星,将天球展开成一个180×360的二维平面,得到天球导航星分布的一个二维数组,经过两级压缩将二维数组压缩为一维数组,然后通过hash技术对该一维数组进行检索,本发明采用两级压缩及Hash映射技术对导航星表进行无冗余存储,实现了对导航星表的检索时间复杂度为0(1),在给定视轴指向的时候,可以快速从导航星表中检索到星敏感器视场内的导航星,具有检索速度快、效率高的特点。
申请公布号 CN101995248B 申请公布日期 2012.06.06
申请号 CN201010545445.X 申请日期 2010.11.12
申请人 清华大学 发明人 梁斌;杨君;宋靖雁;张涛;朱海龙;宋亮亮
分类号 G01C21/24(2006.01)I 主分类号 G01C21/24(2006.01)I
代理机构 西安智大知识产权代理事务所 61215 代理人 贾玉健
主权项 一种快速搜索导航星表的方法,包括以下步骤,第一步,直接利用天球的原始赤经赤纬圈对天区划分;第二步,根据视轴指向计算星敏感器视场所覆盖区域的赤经赤纬跨度范围(CJ,Cw),CJ为视场所覆盖区域赤经跨度范围,cw为视场所覆盖区域赤纬跨度范围,CJ∈(CJ0‑arctan(tanθ/cos(Cw0+R)),CJ0+arctan(tanθ/cos(Cw0+R))),Cw∈(Cw0‑R,Cw0+R),其中,CJ0为星敏感器视轴初始指向的赤经坐标,Cw0为星敏感器视轴初始指向的赤纬坐标,R为星敏感器圆视场半径,θ是赤纬值为Cw0+R的视轴指向所夹角的一半;第三步,搜索所述赤经赤纬跨度范围(CJ,Cw)内的导航星表,得到在该视场内的导航星,将天球展开成一个180×360的二维平面,导航星放入对应的赤经赤纬圈中,得到整个天球的导航星分布,将导航星占据的天球部分用1表示,没有导航星占据的天球部分用0表示,得到天球导航星分布的一个二维数组,其行号为赤经,范围(1,360),列号为赤纬,范围(1,180);第四步,利用hash技术将第三步得到的二维数组压缩为一维数组,然后对该一维数组进行检索,一维数组的key值为key=x(row_index,column_index)=column_index×mi+row_index其中,row_index为二维数组行号,1≤row_index≤mi,mi=360;column_index为二维数组列号1≤column_index≤mj,mj=180,具体分为两级压缩:第一级,将全零行压缩,全零行对应的row_lookup_table行值置为‑1,建立第一级row_lookup_table,根据公式hash_value_1=row_lookup_table(floor(key/mi)+1)建立第一级hash检索函数,当hash_value_1=‑1时,表示区域内没有导航星,当hash_value_1为其它值时,则 表示区域内有导航星,其中floor为matlab中的取整函数,mi=360;第二级,处理非零行,首先将含有导航星的行,按照其含导航星数量的多少进行降序排列,将导航星数目最多的一行优先放入一维导航星表,然后检查每一行中所有非零元素对应的一维导航星表中的值S[r[i]+j]是否为零,如果不为零,r[i]增加1后重新开始检查,直到该行所有非零元素对应的S[r[i]+j]均为零,由公式value_row=P‑K求得二级row_lookup_table其它的value_row值,其中P指该行非零元素插入一维导航星表的位置,K指该行第一个非零元素在本行的位置,根据第二级row_lookup_table的值得到用于快速检索的二级hash函数hash_value_2=(row_lookup_table[row_index]+column_index),其中,row_index为二维数组行号,1≤row_index≤mi,mi=360;column_index为二维数组列号1≤column_index≤mj,mj=180。
地址 100084 北京市100084信箱82分箱清华大学专利办公室