导航:首页 > 源码编译 > gps导航算法用matlab仿真

gps导航算法用matlab仿真

发布时间:2024-01-08 14:49:52

1. 哪位大神有GPS与捷联惯导组合导航的卡尔曼滤波算法的matlab仿真程序

在下面的仿真的代码中,理想的观测量不是真实数据,而是自生成的正弦波数据,在真实的应用场景中,应该是一系列的参考数据。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 卡尔曼滤波器在INS-GPS组合导航中应用仿真
% Author : lylogn
% Email : [email protected]
% Company: BUAA-Dep3
% Time : 2013.01.06
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 参考文献:
% [1]. 邓正隆. 惯导技术, 哈尔滨工业大学出版社.2006.
clear all;
%% 惯性-GPS组合导航模型参数初始化
we = 360/24/60/60*pi/180; %地球自转角速度,弧度/s
psi = 10*pi/180; %psi角度 / 弧度
Tge = 0.12;
Tgn = 0.10;
Tgz = 0.10; %这三个参数的含义详见参考文献
sigma_ge=1;
sigma_gn=1;
sigma_gz=1;
%% 连续空间系统状态方程
% X_dot(t) = A(t)*X(t) + B(t)*W(t)
A=[0 we*sin(psi) -we*cos(psi) 1 0 0 1 0 0;
-we*sin(psi) 0 0 0 1 0 0 1 0;
we*cos(psi) 0 0 0 0 1 0 0 1;
0 0 0 -1/Tge 0 0 0 0 0;
0 0 0 0 -1/Tgn 0 0 0 0;
0 0 0 0 0 -1/Tgz 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;]; %状态转移矩阵
B=[0 0 0 sigma_ge*sqrt(2/Tge) 0 0 0 0 0;
0 0 0 0 sigma_gn*sqrt(2/Tgn) 0 0 0 0;
0 0 0 0 0 sigma_gz*sqrt(2/Tgz) 0 0 0;]';%输入控制矩阵
%% 转化为离散时间系统状态方程
% X(k+1) = F*X(k) + G*W(k)
T = 0.1;
[F,G]=c2d(A,B,T);
H=[1 0 0 0 0 0 0 0 0;
0 -sec(psi) 0 0 0 0 0 0 0;];%观测矩阵
%% 卡尔曼滤波器参数初始化
t=0:T:50-T;
length=size(t,2);
y=zeros(2,length);
Q=0.5^2*eye(3); %系统噪声协方差
R=0.25^2*eye(2); %测量噪声协方差
y(1,:)=2*sin(pi*t*0.5);
y(2,:)=2*cos(pi*t*0.5);
Z=y+sqrt(R)*randn(2,length); %生成的含有噪声的假定观测值,2维
X=zeros(9,length); %状态估计值,9维
X(:,1)=[0,0,0,0,0,0,0,0,0]'; %状态估计初始值设定
P=eye(9); %状态估计协方差
%% 卡尔曼滤波算法迭代过程
for n=2:length
X(:,n)=F*X(:,n-1);
P=F*P*F'+ G*Q*G';
Kg=P*H'/(H*P*H'+R);
X(:,n)=X(:,n)+Kg*(Z(:,n)-H*X(:,n));
P=(eye(9,9)-Kg*H)*P;
end
%% 绘图代码
figure(1)
plot(y(1,:))
hold on;
plot(y(2,:))
hold off;
title('理想的观测量');
figure(2)
plot(Z(1,:))
hold on;
plot(Z(2,:))
hold off;
title('带有噪声的观测量');
figure(3)
plot(X(1,:))
hold on;
plot(X(2,:))
hold off;
title('滤波后的观测量');

2. 利用matlab分别对三边测量定位算法和改进算法进行仿真和验证 急求源程序

%%清空环境变量

clc

clear

loaddata

%%数据累加作为网络输入

[n,m]=size(X);

fori=1:n

y(i,1)=sum(X(1:i,1));

y(i,2)=sum(X(1:i,2));

y(i,3)=sum(X(1:i,3));

y(i,4)=sum(X(1:i,4));

y(i,5)=sum(X(1:i,5));

y(i,6)=sum(X(1:i,6));

end

%%网络参数初始化

a=0.3+rand(1)/4;

b1=0.3+rand(1)/4;

b2=0.3+rand(1)/4;

b3=0.3+rand(1)/4;

b4=0.3+rand(1)/4;

b5=0.3+rand(1)/4;

%%学习速率初始化

u1=0.0015;

u2=0.0015;

u3=0.0015;

u4=0.0015;

u5=0.0015;

%%权值阀值初始化

t=1;

w11=a;

w21=-y(1,1);

w22=2*b1/a;

w23=2*b2/a;

w24=2*b3/a;

w25=2*b4/a;

w26=2*b5/a;

w31=1+exp(-a*t);

w32=1+exp(-a*t);

w33=1+exp(-a*t);

w34=1+exp(-a*t);

w35=1+exp(-a*t);

w36=1+exp(-a*t);

theta=(1+exp(-a*t))*(b1*y(1,2)/a+b2*y(1,3)/a+b3*y(1,4)/a+b4*y(1,5)/a+b5*y(1,6)/a-y(1,1));

kk=1;

%%循环迭代

forj=1:10

%循环迭代

E(j)=0;

fori=1:30

%%网络输出计算

t=i;

LB_b=1/(1+exp(-w11*t));%LB层输出

LC_c1=LB_b*w21;%LC层输出

LC_c2=y(i,2)*LB_b*w22;%LC层输出

LC_c3=y(i,3)*LB_b*w23;%LC层输出

LC_c4=y(i,4)*LB_b*w24;%LC层输出

LC_c5=y(i,5)*LB_b*w25;%LC层输出

LC_c6=y(i,6)*LB_b*w26;%LC层输出

LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;%LD层输出

theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));%阀值

ym=LD_d-theta;%网络输出值

yc(i)=ym;

%%权值修正

error=ym-y(i,1);%计算误差

E(j)=E(j)+abs(error);%误差求和

error1=error*(1+exp(-w11*t));%计算误差

error2=error*(1+exp(-w11*t));%计算误差

error3=error*(1+exp(-w11*t));

error4=error*(1+exp(-w11*t));

error5=error*(1+exp(-w11*t));

error6=error*(1+exp(-w11*t));

error7=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*(w21*error1+w22*error2+w23*error3+w24*error4+w25*error5+w26*error6);

%修改权值

w22=w22-u1*error2*LB_b;

w23=w23-u2*error3*LB_b;

w24=w24-u3*error4*LB_b;

w25=w25-u4*error5*LB_b;

w26=w26-u5*error6*LB_b;

w11=w11+a*t*error7;

end

end

%画误差随进化次数变化趋势

figure(1)

plot(E)

title('训练误差','fontsize',12);

xlabel('进化次数','fontsize',12);

ylabel('误差','fontsize',12);

%print-dtiff-r60028-3

%根据训出的灰色神经网络进行预测

fori=31:36

t=i;

LB_b=1/(1+exp(-w11*t));%LB层输出

LC_c1=LB_b*w21;%LC层输出

LC_c2=y(i,2)*LB_b*w22;%LC层输出

LC_c3=y(i,3)*LB_b*w23;%LC层输出

LC_c4=y(i,4)*LB_b*w24;%LC层输出

LC_c5=y(i,5)*LB_b*w25;

LC_c6=y(i,6)*LB_b*w26;

LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;%LD层输出

theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));%阀值

ym=LD_d-theta;%网络输出值

yc(i)=ym;

end

yc=yc*100000;

y(:,1)=y(:,1)*10000;

%计算预测的每月需求量

forj=36:-1:2

ys(j)=(yc(j)-yc(j-1))/10;

end

figure(2)

plot(ys(31:36),'-*');

holdon

plot(X(31:36,1)*10000,'r:o');

阅读全文

与gps导航算法用matlab仿真相关的资料

热点内容
性用社app怎么样转成什么了 浏览:523
app平板怎么用 浏览:645
android条形码zbar 浏览:382
深入dos编程书值得看嘛 浏览:252
薯仔app下载了怎么注册 浏览:843
云服务器一般租多大 浏览:469
屏幕录制app怎么样 浏览:686
义乌市联DNS服务器地址 浏览:669
App二级页面怎么做 浏览:956
提高pdf清晰度 浏览:979
服务器网卡mac地址怎么查 浏览:114
裁决之地服务器为什么这么卡 浏览:597
民生app怎么查保险 浏览:467
单片机蓝牙驱动代码 浏览:467
php实现多选后公开 浏览:645
map中的值为数组的怎么编程 浏览:261
加密货币怎么登录 浏览:1002
如何看本机服务器实例名 浏览:388
变频器加密密码 浏览:796
美国银行加密市场 浏览:384