function out = EKF_dynamic(u)
global miu;
global Pk;
global Xk;
global dt;
global tt;
r_real = u(1:3);
t = u(4);
Q = zeros(6);
%%%%%%%%辅助公式%%%%%
% X(k+1/k) = X(k) + f(X(k))*T + A(X(k))*f(X(k))*T^2/2;
% P(k+1/k) = fai(k)*P(k)*fai(k)' + Q(k);
% K(k+1/k) = p(k+1/k)*H(k+1)'*inv( H(k+1)*P(k+1/k)*H(k+1)' + R(k+1) );
% X(k+1) = X(k+1/k) + K(k+1)*[ Z(k+1) - h(X(k+1/k)) ];
% P(k+1) = [ I - K(k+1)*H(k+1) ]*P(k+1/k);
%%%%%%%%导航部分%%%%%
if abs(t - dt*round(t/dt)) < 0.01
if abs(t-tt)>0.02
tt = t;
f = 0.2;
%%%%%%%%观测值%%%%%%%
h = [1;0;0];
zb = r_real/norm(r_real);
yb = cross(r_real/norm(r_real),h/norm(h))/norm(cross(r_real/norm(r_real),h/norm(h)));
xb = cross(yb,zb);
Cba = [xb';yb';zb'];
r_real = Cba*r_real;
px = f*(r_real(1)/r_real(3) + 18/3600*pi/180*randn);
py = f*(r_real(2)/r_real(3) + 18/3600*pi/180*randn);
Rk = [(f*18/3600*pi/180)^2 0
0 (f*18/3600*pi/180)^2];
%%%%%%%%状态转换矩阵%%%%%%%
rxk = Xk(1);
ryk = Xk(2);
rzk = Xk(3);
vxk = Xk(4);
vyk = Xk(5);
vzk = Xk(6);
r_norm = sqrt(rxk^2 + ryk^2 + rzk^2);
A1 = miu*[-1/r_norm^3+3*rxk^2/r_norm^5 3*rxk*ryk/r_norm^5 3*rxk*rzk/r_norm^5;
3*rxk*ryk/r_norm^5 -1/r_norm^3+3*ryk^2/r_norm^5 3*ryk*rzk/r_norm^5;
3*rxk*rzk/r_norm^5 3*ryk*rzk/r_norm^5 -1/r_norm^3+3*rzk^2/r_norm^5];
A = [zeros(3) eye(3);
A1 zeros(3)];
fai = eye(6) + A*dt + A^2*dt/2;
%%%%%%%%预测值%%%%%%%
option = odeset('RelTol', 1e-4);
tspan = [0 dt];
[t_orbit, x_orbit] = ode45('dif_orbit_dynamics',tspan,Xk,option);
Xk1 = x_orbit(end,:)';
Pk1k = fai*Pk*fai'+ Q;
%%%%测量预测
r_p = Cba*Xk1(1:3);
px_p = f*(r_p(1)/r_p(3));
py_p = f*(r_p(2)/r_p(3));
H1 = [f/r_p(3) 0 -f*r_p(1)/r_p(3)^2;
0 f/r_p(3) -f*r_p(2)/r_p(3)^2];
H = [H1*Cba zeros(2,3)];
%%%%%%%%滤波器%%%%%%%
Kk = Pk1k*H'/(H*Pk1k*H'+Rk);
Xk = Xk1 + Kk*[px-px_p; py-py_p];
Pk = (eye(6)-Kk*H)*Pk1k;
end
out = Xk;
else
dett = t - dt*fix(t/dt);
out = [(Xk(1:3)+dett*Xk(4:6));Xk(4:6)];
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab模拟分配模型仿真(源码+数据).rar
共28个文件
m:16个
slx:9个
mat:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2023-03-22
21:38:35
上传
评论
收藏 253KB RAR 举报
温馨提示
1、资源内容:基于Matlab模拟分配模型仿真(源码+数据).rar 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab模拟分配模型仿真(源码+数据).rar (28个子文件)
基于Matlab模拟分配模型仿真(源码+数据)
kalman
dif_orbit_dynamics.m 283B
data.m 741B
EKF_dynamic.m 2KB
gangti.slx 22KB
actuator
diancifa2.slx 19KB
diancifa.slx 21KB
diancifa2.m 216B
Doppler
Doppler.jpg 32KB
Doppler.m 868B
gangti
mgangti.m 864B
GGT.m 140B
FB.m 337B
B.mat 7KB
sin_learn.slx 19KB
gangti.slx 29KB
erti
orbit_satellite.m 1KB
dif_orbit_dynamics.m 292B
runge.m 523B
sunsensor
mgangti.m 1KB
GGT.m 140B
fortestSS.slx 29KB
FB.m 337B
B.mat 7KB
sunSenor.slx 26KB
sin_learn.slx 19KB
gangti.slx 36KB
LeastSquare
main_LS.m 2KB
LeastSquare_GPS.m 429B
共 28 条
- 1
资源评论
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2179
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功