ukf实测信号的预测 matlab,无迹卡尔曼滤波(UKF)在参数估计应用中迭代停滞问题

在项目中尝试用UKF(无迹卡尔曼滤波)替代EKF进行模型参数估计,发现在迭代初期状态有更新,但随后状态协方差变小导致状态几乎不变。提供了一个简化版的MATLAB UKF代码,出现迭代停滞问题,寻求解决方案。
摘要由CSDN通过智能技术生成

本帖最后由 华仔zju 于 2017-3-23 16:40 编辑

最近项目上在利用卡尔曼滤波进行模型参数估计,编写的EKF程序运行良好,后来看到论文提及UKF效果会比EKF更好,便想着使用UKF试一试

仿造 https://www.ilovematlab.cn/thread-190623-1-1.html 编写代码,运行之后发现仅在前几步迭代过程中状态会更新,随后状态协方差会变得很小,导致状态量几乎不变化。

以下是简化版的代码,求各位大神指点迷津

% function data=createst(snr)为信号发生函数

% function testukf为主函数

% function  statenext=systemfun(statelast)为状态方程,一旦数据采集得到,那么模型中状态量就固定了,此处认为k+1时的状态与k时状态相同

% function  y=measurefun(statelast,time)为观测方程

% function [xc,p]=UKFfiter(systemfun,measurefun,xc0,yc,p0,time)为UKF函数

function data=createst(snr)

%函数为s=a*t+b*cos(t)+c*sin(t)+d  根据给定的100个(t,s)点,求取对应的a,b,c,d值

a=0.5; b=20; c=10; d=30;

t=1:100;

for i=1:100

s(1,i)=a*t(1,i)+b*cos(t(1,i))+c*sin(t(1,i))+d;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值