数学表达式遥测工程参数解析系统实现.pdf_第1页
数学表达式遥测工程参数解析系统实现.pdf_第2页
数学表达式遥测工程参数解析系统实现.pdf_第3页
数学表达式遥测工程参数解析系统实现.pdf_第4页
数学表达式遥测工程参数解析系统实现.pdf_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3 2 卷第2 期 2 0 1 3 年4 月 飞行器测控学报 J o u r n a lo fS p a c e c r a f tT T & CT e c h n o l o g y V 0 1 3 2N O 2 A p r 2 0 1 3 数学表达式遥测工程参数解析系统实现+ 何华,商临峰 ( 太原卫星发射中心太原0 3 6 3 0 1 ) 摘要:为解决航天靶场测控中心实时遥测数据处理软件开发过程中航天器工程参数类型多、数据量大,遥测参数 必须频繁更动源代码的问题,引入了数学表这式解析方法。论述了表达式解析系统的设计思想,并从理论上对表 达式解析系统的需求和设计原则进行简要分析,在Q t 集成开发环境中结合标准C + + 库进行了系统实现,提出了 逆序函数处理恩想,有效解决了函数嵌套的问题,最后通过举例详细说明了表达式解析系统的处理过程,并通过测 试字符串表达式验证了系统的正确性。 关键词:数学表达式解析;遥测数据处理;函数嵌套;航天测控 中图分类号:V 5 5 7 3 ;T P 3 1 9文献标志码:A 文章编号:1 6 7 4 5 6 2 0 ( 2 0 1 3 ) 0 2 0 1 2 7 0 5 D O I :1 0 7 6 4 2 j i s s n 1 6 7 4 5 6 2 0 2 0 1 3 0 2 一0 1 2 7 一0 5 I m p l e m e n t a t i o no fM a t hE x p r e s s i o nT e l e m e t r y E , f f“ gP a r a m e t e rP a r 、,S y s t e m n g t n e e r i n g a r a m e t e ra r s e rS y s t e m H EH u a ,S H A N GL i n f e n g ( T a i y u a nS a t e l l i t eL a u n c hC e n t e r 。T a i y u a n0 3 6 3 0 1 ) A b s t r a c t :M a t he x p r e s s i o np a r s e ra p p r o a c hi su s e di nd e v e l o p m e n to fr a n g et e l e m e t r yd a t ar e a l t i m ep r o c e s s i n gs o f t w a r et oa d a p tt Od i v e r s i f i e dt y p e so fs p a c e c r a f te n g i n e e r i n gp a r a m e t e r s ,l a r g ea m o u n to fd a t aa n dt h en e e do ff r e q u e n t c h a n g e so ft h es o u r c ec o d e s T h ep a p e rb r i e f l yi n t r o d u c e st h eu s a g eo ft h em a t he x p r e s s i o np a r s e rs y s t e ma n dt h e o r e t i c a l l ya n a l y s e st h er e q u i r e m e n t sa n dd e s i g np r i n c i p l e s I nQ ti n t e g r a t e dd e v e l o p m e n te n v i r o n m e n tc o m b i n e dw i t h s t a n d a r dC + + l i b r a r yt oi m p l e m e n tt h es y s t e m ,t h ei d e ao fr e v e r s ef u n c t i o np r o c e s s i n gi sp r o p o s e dt Oe f f e c t i v e l y s o l v et h ep r o b l e mo fn e s t e df u n c t i o n F i n a l l y ,a ne x a m p l ei sg i v e nt oe x p o u n dt h ep r o c e s sf l o wo fm a t he x p r e s s i o n p a r s e rs y s t e ma n dt Ov e r i f yt h ec o r r e c t n e s so ft h es y s t e mt h r o u g ht e s t so fs t r i n ge x p r e s s i o n s K e y w o r d s :m a t he x p r e s s i o np a r s e r ;t e l e m e t r yd a t ap r o c e s s i n g ;n e s t e df u n c t i o n ;a e r o s p a c et r a c k i n ga n dc o n t r o l 0 引言 遥测数据处理是航天靶场测控中心主要的工作 之一。遥测参数中的工程参数具有类型多、数据量 大、数据还原方法可用数学表达式表示的特点。解 算遥测参数的一种方法是针对特定型号航天器,构 造相应的遥测参数解算方法描述参数矩阵,使矩阵 的行与不同的参数对应起来口 ,而行中的各项与参 数的处理方法、常数、系统等对应起来。这种方法可 实现同类参数还原方法的复用,具有一定先进性,但 当出现新型遥测参数解算要求时,仍无法避免更动 软件源代码的问题。 在新型实时遥测处理软件开发过程中,考虑到 适应未来各种新型工程参数解法的通用特性,提出 在软件的配置文件中用数学表达式来还原遥测参数 的方法,即将新型遥测参数的解算方法以数学表达 式的方式写入到配置文件中,这样,在出现各类遥测 参数时,仅需要增加配置文件中的数学表达式,遥测 数据处理软件就可通过M E P ( 数学表达式解析) 方 法来实现遥测参数解算。 1 数学表达式解析 1 1 表达式表示法 数学表达式最常见的表示法有3 种,即中缀、前 * 收稿日期:2 0 1 3 一0 1 17 ;修回日期:2 0 1 3 0 1 2 1 ;网络出版时间:2 0 1 3 3 2 9 1 0 :4 7 网络出版地址:h t t p :W W W c n k i n e t k c m s d e t a i l 1 1 4 2 3 0 T V 2 0 1 3 0 3 2 9 1 0 4 7 0 1 5 h t m l 第一作者简介:何华( 1 9 8 6 一) ,男,硕士研究生,N - 程师,主要研究方向为计算机应用;E m a i l :h e h u a 4 3 3 1 3 1 1 6 3 c o r n 万方数据 1 2 8 飞行器测控学报 第3 2 卷 缀和后缀表示法比J 。 所谓前缀( 后缀) 表示法,顾名思义就是操作符 写在操作数之前( 之后) 的表示法,这2 种表示法仅 用于计算机科学领域。 中缀表示法是表达式的常规表示法,即每个操 作符都位于其操作数的中间。这种表示法符合人们 的公式表达逻辑,是一种普遍接受的表示方法,所以 本文所研究的表达式解析系统都是基于中缀表示法 的实现。 中缀表示法的特点是任何一个操作符两端都有 一个操作数,对表达式的语义进行分析时,需要用到 括号和运算符的优先级来确定运算规则,排除表达 式的多义性。 对中缀表示法表示的表达式进行运算时,须遵 循以下3 条规则:1 ) 先计算括号内,后计算括号外; 2 ) 在无括号时,先进行优先级高的运算符的计算;3 ) 在运算符优先级相同时,遵循从左至右的原则。从 这3 条规则中可以看出,在中缀表达式的计算过程 中,既要考虑括号的作用,又要考虑运算符的优先 级,还要考虑运算符出现的先后次序。 1 2 表达式解析的基本原理 中缀表达式可包含如下部分:操作数、操作符、 元函数。除基本的二元运算符加、减、乘、除、乘方、 取余、与、或操作外,括号被视为操作符进行存储,但 不进行计算,括号用于区分运算级。元函数是为实 现基本功能而增加的特殊处理方法,如三角函数、按 位运算等。 一般的表达式解析算法都是通过2 个栈来实 现:其中一个栈寄存操作符,另一个栈寄存操作数或 计算结果。算法的基本思想是依次读人表达式中的 每个字符,如果是操作数则压入操作数栈,若是操作 符,则和操作符栈的栈顶元素比较优先级,如果栈顶 操作符的优先级低,则将新操作符入栈,否则从操作 数栈中弹出操作数,和栈顶操作符进行计算,并将计 算结果压入操作数栈,将新操作符压人操作符栈。 重复以上操作,直至表达式求值完毕 3 。 2需求分析 系统实现的根本目的是要在配置文件中实现函 数计算的功能,改变以往通过程序编码来实现函数 计算的种种弊端。 为了实现对配置文件中字符表达式的解析,表 达式解析系统应该满足以下条件: 1 ) 能正确区分数学表达式字符串中的操作数和 操作符; 2 ) 能正确按照运算符的优先级进行计算; 3 ) 能高效地扩展,实现自定义的方法和函数,如 s q r t 、p o w 、s i n 、t a n 、c t a n 等; 4 ) 能正确处理自定义方法和函数的嵌套处理, 如s i n ( a t a n ( A ) ) ; 5 ) 能够正确处理函数和基本运算自由组合的情 况,如E + s i n ( a t a n ( A B * C ) ) F ; 6 ) 能自适应逻辑运算和算术运算,并能对两者 混合的表达式进行正确处理; 7 ) 能根据操作符和输入变量的数据类型,得出 符合计算机逻辑的计算结果,如2 3 0 ,而2 0 3 0 6 6 6 7 ; 8 ) 能适应遥测参数实时解算的需求,满足操作 数可实时替换的需求。 为了符合以上条件,表达式解析系统在实现时, 应遵循以下几个原则: 1 ) 在对输入的字符串进行操作数和操作符划分 时,应依据操作符和括号为分割线,进行字符划分, 因为基本的操作符是有限可遍历的,而操作数是没 有极限,无法穷举的; 2 ) 在对自定义函数进行处理时,为了适应函数 嵌套,应从后至前对函数进行处理; 3 ) 系统中对基本操作符的优先级要有明确的定 义,这是系统能按优先级进行运算的基础; 4 ) 算术运算的优先级应高于逻辑运算的优先 级,算术运算和逻辑运算混合计算的结果是一个逻 辑结果; 5 ) “) ”的运算优先级最高,应保证遇到“) ”符号 后立即计算出与之匹配的“( ”之间的内容; 6 ) 解析系统中自定义的函数应该是比较重要的 基本函数( 元函数) ,是实现复杂计算必须具备的最 小函数单元,这样既可以保证系统的灵活性,又可以 避免表达式解析系统冗余臃肿,防止出现将过去编 码实现的函数移到解析系统中编码实现的现象。 3 系统实现 3 1 系统的动态输入 为了使系统满足参数实时解算的要求,实现表达 式中参数的实时性和可替换性,充分利用已经定义好 的数据结构,系统引入了占位符的概念。在X M L ( 可 扩展标记语言) 配置文件中配置含占位符的表达式, 万方数据 第2 期何华,等:数学表达式遥测工程参数解析系统实现 指定相应的帧数据I D ( 标志符) 来实现参数的灵活替 换,用时变的帧数据驱动表达式,从而获得时变的参 数结果。X M L 配置文件的部分片段如下: 系统的输入为含占位符的字符串表达式( E x p r e s s i o n ) 和数据帧的序号( F r a m e D a t a I D ) ,通过占 位符替换,系统将帧数据中时变的参数值传给表达 式,替换表达式中的占位符,从而得到仅含操作数和 操作符的规则字符串数学表达式。 在上述配置文件中定义了2 个表达式,E x p r e s s i o n I D 分别为0 和1 ,下面以表达式s q r t ( ( $ 5 ) “2 + ( $ 6 ) “2 + ( $ 7 ) “2 ) 为例,说明系统如何在X M L 配 置文件中实现函数功能。在X M L 配置文件中,表达 式s q r t ( ( $ 5 ) “2 + ( $ 6 ) “2 + ( $ 7 ) “2 ) 对应的帧数 据F r a m e S t r u c t I D 等于2 0 0 ,该帧数据对应的帧结构 如下: 在表达式中占位符( $ i ) 表示取帧数据中的第i + 1 个参数,从帧结构可知,( $ 5 ) 、( $ 6 ) 、( $ 7 ) 分别对应的 帧数据项为V x 、V y 、V z 。表达式s q r t ( ( $ 5 ) “2 + ( $ 6 ) “2 + ( $ 7 ) “2 ) 表达的含义为 V 聋+ V 旷+ V z 2 , 即速度矢量的值。 在实时参数解算过程中,V x 、V y 、V z 分别对应 最优方案帧中某一时刻的值。假定当前时刻V x 、 V y 、V z 分别等于1 0 、2 0 、3 0 ,通过占位符替换后 表达式变为s q r t ( 1 0 “2 + 2 0 “2 + 3 0 “2 ) ,将该表 达式作为字符串输入给表达式解析系统,求出该时 刻的速度值为4 1 0 2 + 2 0 2 + 3 0 2 3 7 4 1 6 5 7 3 。 3 2 元函数的处理 在占位符替换后,表达式中包含3 类成员,元函 数、操作符、操作数,系统首先对元函数进行逆序处 理,即先处理表达式中位置靠后的元函数,因为这样 可以有效地解决函数嵌套的问题。 对于表达式s q r t ( A * B + s i n ( C ) ) ,系统总是从 后至前进行元函数的计算,即先处理s i n ( C ) ,将处 理后的结果( 假定d s i n ( C ) ) 回传表达式,得到 s q r t ( A * B + d ) ,然后计算s q r t 元函数,这样总能保 证嵌套在内需要先进行计算的元函数先得到处理。 当完成对所有元函数的计算后,总能得到仅包含操 作数和操作符的简单表达式,对简单表达式计算得 出最终结果。 3 3 简单表达式的计算 对于一个标准的简单数学表达式,例如,A * B + C ( D E ) ,系统是如何来对其进行有效解析并 得出正确的值呢? 系统定义了2 个L I F O ( 后入先出) 的栈m S t a c k O p e r a n d 和m s t a c k O p e r a t o r 分别用于存 放表达式中的操作数和操作符。 对于一个简单表达式,系统的处理过程主要分 为以下几步: 1 ) 首先检查表达式的合法性。 2 ) 将表达式进行片段划分,划分后得到一个包 含操作数、操作符和括号混合的一维数组m T o k e n s i 。 3 ) 循环处理m T o k e n s i 数组,处理的具体过 程如下: 若m T o k e n s i 是操作数,直接将该操作数 压入操作数栈m S t a c k O p e r a n d 口中; 若m T o k e n s i 是操作符,且满足该操作符 的优先级比操作符栈m S t a c k O p e r a t o r 的第一个操 作符优先级低,则从操作符栈中弹出操作符,并从操 作数栈m S t a c k O p e r a n d 中弹出2 个操作数进行 计算,将计算所得结果存入操作数栈,并将m T o k e n s i 操作符压入操作符栈,否则,直接将该操作 符压入操作符栈中。 4 ) 若操作符栈非空,则从操作符栈中弹出操作 万方数据 1 3 0 飞行器测控学报第3 2 卷 符,并从操作数栈r f l s t a c k O p e r a n d 中弹出2 个操 作数进行计算,直到操作符栈为空则计算完毕。 A 4 B + C ( D E ) , 1 ) 去掉空格 t S r c = “A * B + C ( D E ) ” 2 ) 片段划分 m j l o k e n s 1 = A ,+ ,B ,+ ,C , ( ,D ,一,E ) ) ,循她 姗变 m S l a c k O p e r a n d = n ,C ,m ) m _ S t a c k O p e r a t o = ,+ ) 4 ) 计算、+ 1 1 1 一S t a c k O p e r a n d = l C n ,m ) m S t a c k O p e r a t o = + j f , 1 1 f 、 对于简单表达式A * B + c ( D E ) ,系统的处 理过程如图1 所示。 Af 。m 姗_ S l a c k ( ) p O p 。e 叫r a n d = ) 1 l m S t a c k O p e r a n d = A m _ s t a c k O p e r a t o = 4 I B l 。m _ s S t t 。a 。c k k 。O p p 。e 。r a 。t n 。d : = + B ,A 1 I m S t a c k O p e r a n d = m 】 + l m S t a c k O p e r a t o = + cl 。m 一_ s S t t 。a 。c k k 。O p p 。e ,r 。a t n 。d : ( = + ) c ,“1 ,J m S t a c k O p e r a n d = C ,m 二I 竺:! ! 丛Q 堡唑三坠! 1 气压瑟园 。l 。m _ s S t t 。a 。c k k 。O p p 。e 。r m t l 。d : = ( , D ,+ , C 】m I mS t a c k O p e r a n d = D ,C ,m I m S t a c k O p e r a t o = 一,( ,+ r m S t a c k O p e r a n d = E ,D ,C ,n l l “Im S t a c k O p e r a t o = 一,( ,+ ,匪蕊翌 图1A * B + C ( D E ) 的处理流程 F i g 1 P r o c e s sf l o wo fe x p r e s s i o nA * B + C ( D E ) 简单表达式进行操作符运算必须符合下列3 种 情况的任意一种,否则不进行操作符运算,直接将操 作符压人操作符栈。 情况1 :m T o k e n s - i 是操作符,且要同时满足 以下3 个条件: 1 ) 操作符栈非空; 2 ) m T o k e n s i 操作符的优先级低于操作符栈 顶部操作符的优先级; 3 ) 栈中顶部的操作符不是括号。 若I n T o k e n s i 操作符满足以上3 个条件,则 进行1 次运算,并将运算结果存人操作数栈中,然后 再将操作符栈中顶部的操作符和I T I T o k e n s i 进行 条件判断,若仍满足上述3 个条件,则继续进行处 理,直到不满足上述条件。 情况2 - r n T o k e n s i 是“) ”,则循环进行计算, 直到操作符栈中弹出的操作符为“( ”为止。 满足计算条件,计算A * B m = A + B 不满足计算条件,压栈 不满足计算条件,压栈 计算括号内的表达式 n - - D E 情况3 :m _ T o k e n s 循环处理完毕,若操作符栈 仍非空,则从栈中取操作符计算,直到操作符栈为空。 4 测试验证 为了便于在L i n u x 集群上使用该系统,系统采 用Q t 集成开发环境,结合标准C + + 库进行编码, 很好地实现了跨平台的需求。Q t 是由奇趣科技开 发的跨平台C + + 图形用户应用程序开发框架,Q t 源码只要在相应的平台下进行编译就能得到对应平 台的程序或者库。系统在W i n d o w sX P 操作系统和 L i n u xS U S E I O 操作系统下进行测试,测试结果一 致,系统部分测试结果见表1 ,表中1 n 表示以e 为底 的自然对数,l g 表示以十为底的常用对数。 通过测试,可以看出系统能够满足设计要求,按 照操作符优先级计算,正确处理函数嵌套,能够对参 数进行类型自适应转换。 万方数据 第2 期何华,等:数学表达式遥测工程参数解析系统实现 1 3 1 表1系统的测试结果 T a b 1T e s tr e s u l t so fs y s t e m 表达式结果表达式结果 1 0 + 23a s i n ( s i n ( 3 0 ) )3 0 1 + 23l n ( 5 5 )1 7 0 47 5 1 + 2 * 37 1 n ( 5 + 0 5 )1 7 0 47 5 l + 2 * 3 42 2 3 0 1 + 2 * 3 ( 4 1 )3 2 0 3 0 6 6 66 6 7 5 3 2 2 3 00 6 6 66 6 7 2 A3 8 3 0 + s i n ( 3 0 ) 3 0 5 lg(19(9+1)0 3 0 + s i n ( 1 6 * 2 2 ) + 2 0 5 0 5 s q r t ( 4 ) 2a s i n ( s i n ( 2 8 + 2 ) ) + C O S ( 6 0 )3 0 5 sin(30)05sin(45)0。707 1 0 7 5 结束语 此c + + 数学表达式解析库,从遥测数据处理 5 参数解算的需求出发进行开发。但开发的库具有一 定的通用性,在其他一些类似电子表格的数据处理 领域也可以获得应用。 1 2 3 4 参考文献( R e f e r e n c e s ) 陈以恩遥测数据处理 M 北京:国防工业出版社,2 0 0 2 :3 4 8 3 4 9 C h e nY i e n T e l e m e t r yd a t ap r o c e s s i n g M 3 B e i j i n g :N a t i o n a l D e f e n s eI n d u s t r yP r e s s ,2 0 0 2 :3 4 8 3 4 9 ( I nC h i n e s e ) 肖巍基于C # 的表达式解析器设计E J 长春教育学院学报, 2 0 1 0 ,2 6 ( 6 ) :1 2 5 1 2 6 X i a oW e i D e s i g no fe x p r e s s i o np a r s e rb a s e do nC # J J o u r n a lo fC h a n g c h u nE d u c a t i o nI n s t i t u t e ,2 0 1 0 ,2 6 ( 6 ) :1 2 5 1 2 6 ( I nC h i n e s e ) 孙高飞,王瑞平面向对象的表达式解析算法框架研究与实现 J 现代计算机,2 0 0 9 ( 1 0 ) :1 5 3 1 5 7 S u nG a o f e i ,W a n gR u i p i n g R e s e a r c ha n di m p l e m e n t a t i o no f o r i e n t e d o b j e c te x p r e s s i o np a r s ea l g o r i t h mf r a m e w o r k J M o d e r nC o m p u t e r ,2 0 0 9 ( 1 0 ) :15 3 1 5 7 ( I nC h i n e s e ) 何云东,黄昶复杂表达式解析和计算的研究实现口 中国科 技信息,2 0 0 9 ( 8 ) :3 6 3 8 6 7 8 H eY u n d o n g ,H u a n gC h a n g R e s e a r c ha n di m p l e m e n t a t i o no f c o m p l e xe x p r e s s i o np a r s ea n dc o m p u t e J C h i n aS c i e n c ea n d T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论