資源簡介
卡爾曼濾波小程序,可用于去噪,GPS定位中定位精度的提高,

代碼片段和文件信息
clear?all
close?all
a1?=?-0.975;
a2?=?0.95;
N?=?2;%2階模型
N1?=?1000;%產生數據點數
N2?=?512;%取穩定后的輸入數據個數
K?=?100;%獨立實驗次數
c?=?0.01;
Jmin?=?0.005;%過程噪聲協方差
var_v?=?0.0731;%噪聲方差
u?=?zeros(1N2)‘;
u1?=?zeros(1N1);
EJn?=?zeros(1N2);
err?=?zeros(1N2);
W1?=?zeros(1N2);
out_W1?=?zeros(1N2);
W2?=?zeros(1N2);
out_W2?=?zeros(1N2);
for?i?=?1:K
????v?=?sqrt(var_v)*randn(1N1);
????%==========產生數據=============
????for?m?=?1:N1
????????u1(m+2)?=?-a1*u1(m+1)-a2*u1(m)+v(m);
????end
????u?=?u1(N1-N2+1:N1);%取后面N2個穩定的數據
????%================Kalman濾波==================
????w?=?zeros(1N).‘;%初始化最優權向量w(0)=w(1)=0即狀態向量
????u3?=?[zeros(1N)?u].‘;
????I?=?eye(N);%狀態轉移矩陣
????k?=?c.*I;%預測誤差協方差
????k1?=?zeros(N);%一步預測誤差協方差矩陣
????A?=?0;%新息過程協方差
????G?=?zeros(1N).‘;%Kalman增益
????a?=?0;%定義新息過程
????for?n?=?1:N2
????????k1?=?k;
????????u2?=?u3(n+N-1:-1:n);
????????A?=?(u2‘)*k1*u2+Jmin;
????????G?=?k1*u2*inv(A);
????????a?=?u(n)-(u2‘)*w;
????????w?=?w+G*a;
????????k?=?k1-G*(u2‘)*k1;
????????err(n)?=?a;
????????%abs(u(n)-(u2.‘)*conj(w)).^2;
????????W1(n)?=?w(1);
????????W2(n)?=?w(2);
????end
????EJn?=?EJn+(abs(err).^2);
????out_W1?=?out_W1+W1;
????out_W2?=?out_W2+W2;
end
EJn?=?EJn./K;
out_W1?=?out_W1./K;
out_W2?=?out_W2./K;
subplot(211)
plot(EJn)
grid?on
title(‘Kalman濾波?a1=-0.975?a2=0.95?var_v=0.0731?c=0.01?Jmin=0.005‘)
gtext(‘均方誤差學習曲線‘)
xlabel(‘迭代次數‘);
ylabel(‘均方誤差‘);
%===========繪制權向量學習曲線==============
subplot(212)
plot(out_W1);
gtext(‘w1‘)
grid?on
hold?on
plot(out_W2);
gtext(‘w2‘)
xlabel(‘迭代次數‘)
ylabel(‘權值‘)
ylim([-1.2?1.2])
gtext(‘權值學習曲線‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1758??2009-05-08?19:14??KalmanAlgorithm.m
- 上一篇:51單片機蜂鳴器播放音樂、暫停音樂以及選擇音樂的實現
- 下一篇:EC數據分析
評論
共有 條評論