发明名称 一种基于GPU架构的改进的粒子滤波方法
摘要 本发明属于粒子滤波技术领域,特别涉及一种基于GPU架构的改进的粒子滤波方法。该基于GPU架构的改进的粒子滤波方法包括以下步骤:S1:在CPU端设定粒子个数和观测时刻k;在GPU端初始化粒子;S2:将观测向量传输至GPU显存;当k=1时,执行步骤S3;S3:在GPU端进行重要性采样;S4:在GPU端进行二次采样,得到k时刻的最大似然采样粒子;S5:利用GPU得出k时刻每个最大似然采样粒子的接受概率;S6:在GPU端计算k时刻估计值。S7:在CPU端计算k时刻每个最大似然采样粒子的重采样索引;在GPU端根据重采样索引得出k时刻的重采样粒子,作为下一时刻的初始粒子;S8:将步骤S3至步骤S7重复执行M次,得出M个时刻的估计值。
申请公布号 CN104022756B 申请公布日期 2016.09.07
申请号 CN201410241879.9 申请日期 2014.06.03
申请人 西安电子科技大学 发明人 王俊;张培川;武勇;乔家辉
分类号 H03H17/02(2006.01)I 主分类号 H03H17/02(2006.01)I
代理机构 西安睿通知识产权代理事务所(特殊普通合伙) 61218 代理人 惠文轩
主权项 一种基于GPU架构的改进的粒子滤波方法,其特征在于,包括以下步骤:S1:利用CPU将粒子个数设定为N,利用CPU设定M个观测时刻,N和M均为大于1的自然数,所述M个观测时刻依次表示为1时刻至M时刻;利用GPU生成N个1时刻初始粒子;设置观测时刻参数k,k=1,2,3,...M;在步骤S1中,建立非线性系统的状态模型和观测模型,非线性系统的状态模型和观测模型表示如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>x</mi><mi>k</mi></msub><mo>=</mo><mi>f</mi><mrow><mo>(</mo><msub><mi>x</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>u</mi><mi>k</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>y</mi><mi>k</mi></msub><mo>=</mo><mi>h</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>v</mi><mi>k</mi></msub></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001048065600000011.GIF" wi="422" he="165" /></maths>其中,x<sub>k</sub>表示k时刻非线性系统的m维状态向量,y<sub>k</sub>表示k时刻非线性系统的n维观测向量,m和n均为大于0的自然数;f(·)为描述非线性系统状态模型的非线性函数,h(·)描述非线性系统的观测模型的非线性函数;u<sub>k</sub>为设定的服从高斯分布的k时刻状态噪声,当m=1时,u<sub>k</sub>服从均值为0方差为Q的高斯分布,当m>1时,u<sub>k</sub>的均值为m维零向量,协方差矩阵为Q;v<sub>k</sub>为设定的服从高斯分布的k时刻观测噪声,当n=1时,v<sub>k</sub>服从均值为0方差为R的高斯分布,当n>1时,v<sub>k</sub>的均值为n维零向量,协方差矩阵为R;在步骤S1中,根据所述非线性系统的状态模型和观测模型,利用GPU生成1时刻至M时刻的状态噪声;在步骤S1中,1时刻第i个初始粒子值为<img file="FDA0001048065600000012.GIF" wi="81" he="71" />i取1至N;S2:利用CPU加载每个观测时刻非线性系统的观测向量,CPU将每个观测时刻非线性系统的观测向量传输至GPU显存;当k=1时,执行步骤S3;S3:在GPU中,根据重要性密度函数对k时刻的每个初始粒子进行重要性采样,得出k时刻的多个重要性采样粒子;在步骤S2中,k时刻非线性系统的观测向量为y<sub>k</sub>;在步骤S3中,根据所述非线性系统的状态模型,得出初始粒子的状态转移密度函数p(x<sub>k</sub>|x<sub>k‑1</sub>),选取状态转移密度函数为重要性密度函数q(x<sub>k</sub>|x<sub>k‑1</sub>,Y<sub>k</sub>)=p(x<sub>k</sub>|x<sub>k‑1</sub>),得出k时刻第i个初始粒子的重要性密度函数<img file="FDA0001048065600000021.GIF" wi="1081" he="72" />根据k时刻第i个初始粒子的重要性密度函数对k时刻的每个初始粒子进行重要性采样,得出k时刻的多个重要性采样粒子,k时刻的第i个重要性采样粒子值为<img file="FDA0001048065600000022.GIF" wi="136" he="75" />Y<sub>k</sub>为由观测向量y<sub>1</sub>至y<sub>k</sub>组成的观测序列;S4:在GPU中,根据非线性系统的观测模型,建立似然函数;然后,通过最大化似然函数,对k时刻的每个重要性采样粒子进行二次采样,产生k时刻的多个最大似然采样粒子;根据非线性系统的观测模型,建立似然函数p(y<sub>k</sub>|x<sub>k</sub>)表示为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>p</mi><mrow><mo>(</mo><msub><mi>y</mi><mi>k</mi></msub><mo>|</mo><msub><mi>x</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><mn>2</mn><mi>&pi;</mi><mo>)</mo></mrow><mrow><mo>-</mo><mfrac><mi>n</mi><mn>2</mn></mfrac></mrow></msup><mo>|</mo><mi>R</mi><msup><mo>|</mo><mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></msup><mi>exp</mi><mo>{</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mrow><mo>&lsqb;</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><mi>h</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mi>T</mi></msup><msup><mi>R</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>&lsqb;</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><mi>h</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>}</mo></mrow>]]></math><img file="FDA0001048065600000023.GIF" wi="1425" he="125" /></maths>根据以下公式得出k时刻第i个最大似然采样粒子值<img file="FDA0001048065600000024.GIF" wi="83" he="78" /><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msubsup><mover><mi>x</mi><mo>^</mo></mover><mi>k</mi><mi>i</mi></msubsup><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>H</mi><mi>k</mi><mi>T</mi></msubsup><msup><mi>R</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><msub><mi>H</mi><mi>k</mi></msub><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><msubsup><mi>H</mi><mi>k</mi><mi>T</mi></msubsup><msup><mi>R</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>&lsqb;</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><mi>h</mi><mrow><mo>(</mo><msubsup><mi>x</mi><mrow><mi>k</mi><mo>|</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mi>i</mi></msubsup><mo>)</mo></mrow><mo>+</mo><msub><mi>H</mi><mi>k</mi></msub><msubsup><mi>x</mi><mrow><mi>k</mi><mo>|</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mi>i</mi></msubsup><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0001048065600000025.GIF" wi="1170" he="95" /></maths>其中,T表示矩阵或向量的转置,上标‑1表示矩阵的逆,<img file="FDA0001048065600000026.GIF" wi="512" he="82" /><img file="FDA0001048065600000027.GIF" wi="215" he="69" />为h(x<sub>k</sub>)对x<sub>k</sub>的一阶导数;S5:利用GPU得出k时刻每个最大似然采样粒子的接受概率;S6:在GPU中,根据k时刻每个最大似然采样粒子,得出k时刻非线性系统的状态向量的估计值;S7:GPU将k时刻每个最大似然采样粒子的接受概率传输至CPU;在CPU中,根据所述k时刻每个最大似然采样粒子的接受概率,得出k时刻每个最大似然采样粒子的重采样索引;然后,CPU将k时刻每个最大似然采样粒子的重采样索引传输至GPU;在GPU中,根据k时刻每个最大似然采样粒子的重采样索引,对k时刻每个最大似然采样粒子进行重采样,得出k+1时刻的多个初始粒子;令k值自增1,然后返回至步骤S3;S8:将步骤S3至步骤S7重复执行M次,得出M个观测时刻的非线性系统的状态向量的估计值。
地址 710071 陕西省西安市太白南路2号