導航:首頁 > 源碼編譯 > 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模擬相關的資料

熱點內容
凡科建站怎麼弄伺服器 瀏覽:939
蘋果手機怎麼設置app播放 瀏覽:202
下載網站源碼用什麼瀏覽器 瀏覽:241
六線譜pdf 瀏覽:156
linuxmysqlsock 瀏覽:239
人教版數學pdf下載 瀏覽:460
文檔安全加密系統 瀏覽:491
數控銑床編程簡單數字 瀏覽:788
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503
安卓系統怎麼快速刪除微信內容 瀏覽:653
csharppython 瀏覽:409
程序員脖子按摩儀 瀏覽:562
小米桌面文件夾亂碼怎麼回事 瀏覽:858
點歌台app怎麼連接 瀏覽:318
大學電腦編程學什麼好 瀏覽:348
上哪裡取消應用加密 瀏覽:172
電氣控制與可編程式控制制器pdf 瀏覽:87
cad圖紙不能跨文件夾粘貼 瀏覽:256