卡尔曼滤波递推,波形估计,相关matlab代码以及思路

1、一连续平稳的随机信号,自相关函数,信号为加性噪声所干扰,噪声是白噪声,测量值的离散值为已知。。。。。。自编卡尔曼滤波递推程序,估计信号的波形


以下为相关matlab代码

clc,clear all,close all
% 导入数据
Z = [-3.2,-0.8,-10,-16,-17,-18,-3.3,-2.4,-18,-0.3,-0.4,-0.8,-19,-2,-1.2,-11,-14,-0.9,0.8,10,0.2,0.5,-0.5,2.4,-0.5,0.5,-13,0.5,10,-12,0.5,-0.6,-15,-0.7,15,0.5,-0.7,-2.0,-19,-17,-11,-14];

T= 0.02;
x= [0;0];
F = [1 T  
     0 1 ];
H = [1 0 ];

Q =[0.5, 1; 1, 0.5]; % 过程噪声协方差矩阵
P=diag([1,1]); % 协方差矩阵
R =1; % 观测噪声方差

for k=1:length(Z)
  [x,P] = kalman_filter(x, P, F, Q, H, R, Z(:,k));
  result(:,k)=x;
end
plot(1:length(Z),Z,'r-',1:length(Z),result(1,:),'b-');
xlabel('采样点数');ylabel('信号幅值');

function [x,P] = kalman_filter(x1, P1, F, Q, H, R, Z)
% x1 为前一时刻状态值
% P1 为前一时刻协方差矩阵
% F 为状态转移矩阵     
% Q 为过程噪声的协方差矩阵
% H 为观测矩阵   
% R 为观测噪声协方差
% Z 为观测值
 x = F * x1; %% X(k|k-1) = F(k)*X(k|k-1)
 P = F * P1 * F'+Q;% 协方差的一步预测 
%% 更新
 Z1 = H*x; %观测的预测
 K = P*H'/(H*P*H'+R);% 卡尔曼增益
 x = x+K*(Z-Z1); % 状态更新
 P = P- K*H*P; % 协方差更新
end


以下是卡尔曼滤波的使用大致流程:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值