资源简介
容积卡尔曼,六维状态量(3位置,3速度),matlab代码,模拟基站测距定位
代码片段和文件信息
%% 参数设置
clc;
clear all;
close all;
x_dem=6;
z_dem=4;
tf =20000; % 模拟长度
d=200;
%真实数据(实际)
x=zeros(x_demtf+1);
z=zeros(z_demtf+1);
%真实初始位置(实际)
x(:1)=[000333]‘;
%基站位置
P1=[d -d 0]‘;
P2=[-dd 0]‘;
P3=[-d -d0]‘;
P4=[dd0]‘;
%ckf状态估计
x_ckf=zeros(x_demtf+1);
x_ckf(:1)=x(:1);
%EKF的初始估计
xhat=x_ckf(:1);
x_error=zeros(1tf+1);
y_error=zeros(1tf+1);
z_error=zeros(1tf+1);
Q = 0.01; % 过程状态协方差
array_Q = Q * eye(6); % 过程状态协方差矩阵
R = 0.016; % 测量噪声协方差
array_R = R*eye(z_dem); % 测量噪声协方差矩阵
%误差协方差矩阵初始值
Pplus=diag([0.00990.00990.00990.010.010.01]);
Ts=0.1;%时间间隔
%状态转移矩阵(匀速运动)
F=[1 0 0 Ts0 0;
0 1 0 0 Ts0;
0 0 1 0 0 Ts;
0 0 0 1 0 0;
0 0 0 0 1 0;
0 0 0 0 0 1];
Gamma=[0.5;0.5;0.5;1;1;1];
%CKF权值和sigma采样点矩阵
w=1/(2*x_dem);
kesi=sqrt(x_dem)*[eye(x_dem)-eye(x_dem)];
%% 观测量模拟系统
for k = 1 : tf
x(:k+1) = F * x(:k);% + sqrt(Q) * [randnrandnrandnrandnrandnrandn]‘; %状态值
temp = randn;
for i=1:z_dem-1
temp =[temprandn];
end
z(:k+1) = uwb_obs(x(:k+1)P1P2P3P4) + sqrt(R) *temp‘; %观测值
end;
%% CKF滤波
for k = 1 : tf
%% 状态预测
%求协方差矩阵平方根
S=chol(Pplus‘lower‘);
%计算求容积点
for i=1:2*x_dem
Xpoint(:i)=S*kesi(:i)+xhat;
end
%求传播容积点
for i=1:2*x_dem
Xminus(:i)=F*Xpoint(:i);
end
%状态预测
xminus=w*sum(Xminus2);
%状态预测协方差阵
Pminus=w*sum_square(Xminus)-xminus*xminus‘+ array_Q;
%% 观测更新
%矩阵分解
Sminus=chol(Pminus‘lower‘);
%计算求容积点
for i=1:2*x_dem
Xpoint1(:i)=Sminus*kesi(:i)+xminus;
end
%求传播容积点
for i=1:2*x_dem
Z(:i)=uwb_obs(Xpoint1(:i)P1P2P3P4);
end
%观测预测
zhat=w*sum(Z2);
%观测预测协方差阵
Pzminus=w*sum_square(Z)- zhat*zhat‘+array_R;
%互协方差阵
Pxzminus=zeros(x_demz_dem);
for i=1:2*x_dem
Pxzminus= Pxzminus+w*Xpoint1(:i)*Z(:i)‘;
end
Pxzminus= Pxzminus-xminus*zhat‘;
%计算卡尔曼增益
K=Pxzminus/Pzminus;
%状态更新
xhat=xminus+K*(z(:k)-zhat);
%状态协方差矩阵更新
Pplus=Pminus-K*Pzminus*K‘;
%只用预测
% xhat=xminus;
%% 数据存储
x_ckf(:k+1)=xhat;
% x_ckf(:k+1)=xminus;
end
t = 0 : tf;
figure;
plot(tx(1:)‘k.‘tx_ckf(1:)‘g‘);
legend(‘真实值
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3679 2019-10-17 11:43 容积卡尔曼ckf\ckf.m
文件 186 2019-10-16 16:17 容积卡尔曼ckf\sum_square.m
文件 353 2019-10-17 10:55 容积卡尔曼ckf\uwb_obs.m
文件 133325 2019-10-17 11:44 容积卡尔曼ckf\x_error.mat
文件 133328 2019-10-17 11:44 容积卡尔曼ckf\y_error.mat
文件 1578583 2019-10-17 11:39 容积卡尔曼ckf\z.mat
文件 134365 2019-10-17 11:44 容积卡尔曼ckf\z_error.mat
相关资源
- 滑模控制及观测器设计
- AVL CRUISE_MATLAB联合仿真配置.pdf
- 链路调度matlab程序适合初学者
- 马尔科夫链MATLAB和PPT
- Model Predictive Control System Design and Imp
- matlab智能优化算法30个案例代码
- 最优化方法及MATLAB的实现最优化技术
- 基于MATLAB面部的人数统计系统[戴口罩
- 基于信息熵方法的多阈值图像分割算
- 一个搞定MATLAB界面编程
- Matlab小波分析工具箱原理与应用.pdf
-
PV光伏电池matlabSIMUli
nk - 阵列信号处理中的基于matlab的MUSIC
- RMSHE的MATLAB源代码
- 雷达系统分析与设计(MATLAB版)(第
- Massive MIMO信号检测算法以及信道估计
- MATLAB作图及各种作图函数
- Nonlinear control systems using MATLAB(2019)
- matlab数学建模及数学实验
- AES加密算法的MATLAB仿真
-
FMI Toolbox for Matlab/Simuli
nk的安装和使 - [精通MATLAB GUI设计第3版][陈垚光毛涛涛
- 图像去噪方法分析比较BLS GSM BM3D Non
- 张正友标定程序—MATLAB
- MATLAB 深度学习简介(ppt)
- Census及Hamming距离三维立体重建Matlab程
- NMFSC处理程序,非负矩阵分解matlab程序
- [MATLAB精品丛书][高清文字版]MATLAB语言
- Matlab凸优化工具箱
-
Matlab分享系列 - 3 - Matlab_Simuli
nk代码
评论
共有 条评论