Matlab之Kalman:用線性系統狀態方程,通過系統輸入輸出觀測資料,對系統狀態進行最優估計的演算法
卡爾曼濾波(Kalman filtering)一種利用線性系統狀態方程,通過系統輸入輸出觀測資料,對系統狀態進行最優估計的演算法。由於觀測資料中包括系統中的噪聲和干擾的影響,所以最優估計也可看作是濾波過程。
斯坦利·施密特(Stanley Schmidt)首次實現了卡爾曼濾波器。卡爾曼在NASA埃姆斯研究中心訪問時,發現他的方法對於解決阿波羅計劃的軌道預測很有用,後來阿波羅飛船的導航電腦使用了這種濾波器。 關於這種濾波器的論文由Swerling (1958), Kalman (1960)與 Kalman and Bucy (1961)發表。
資料濾波是去除噪聲還原真實資料的一種資料處理技術, Kalman濾波在測量方差已知的情況下能夠從一系列存在測量噪聲的資料中,估計動態系統的狀態. 由於, 它便於計算機程式設計實現, 並能夠對現場採集的資料進行實時的更新和處理, Kalman濾波是目前應用最為廣泛的濾波方法, 在通訊, 導航, 制導與控制等多領域得到了較好的應用.
clear all; clc; close all; N=2000; gv=0.0332; m=500; a=[-1.6 1.46 -0.616 0.1525]; Q2=0.005;%觀測噪聲方差 w=zeros(m*4,N); alpher=zeros(m,N); for j=1:m v=randn(1,N)*sqrt(gv); u=filter(1,a,v); F=eye(4,4); d=u; C=zeros(4,N); for i=5:N C(:,i)=[u(i-1);u(i-2);u(i-3);u(i-4)]; end C(:,1)=[0;0;0;0]; C(:,2)=[d(1);0;0;0]; C(:,3)=[d(2);d(2);0;0]; C(:,4)=[d(3);d(2);d(1);0]; p_esti=eye(4,4);%狀態誤差自相關矩陣 for i=2:N w([4*j-3,4*j-2,4*j-1,4*j],i)=w([4*j-3,4*j-2,4*j-1,4*j],i-1);%一步預測誤差 alpher(j,i)=d(i)-C(:,i)'*w([4*j-3,4*j-2,4*j-1,4*j],i).'';%計算資訊過程 p_pre=p_esti;%一步預測誤差自相關矩陣 A=C(:,i)'*p_pre*C(:,i)+Q2;%新息過程自相關矩陣 k=p_pre*C(:,i)/A; w([4*j-3,4*j-2,4*j-1,4*j],i)=w([4*j-3,4*j-2,4*j-1,4*j],i)+k*alpher(j,i);%狀態估計 p_esti=p_pre-k*C(:,i)'*p_pre;%狀態估計誤差自相關矩陣 end end MSE=sum(alpher.^2)/m; MSE=MSE/max(MSE); MSE=10*log10(MSE); figure(1) plot(MSE); title(' 均方誤差變化曲線'); xlabel('迭代次數n');ylabel('MSE'); w_aver=zeros(4,N); for i=1:m w_aver(1,:)=w_aver(1,:)+w(4*i-3,:); w_aver(2,:)=w_aver(2,:)+w(4*i-2,:); w_aver(3,:)=w_aver(3,:)+w(4*i-1,:); w_aver(4,:)=w_aver(4,:)+w(4*i,:); end w_aver=w_aver/m; figure(2) hold on; plot(w_aver(1,:),'b'); plot(w_aver(2,:),'b'); plot(w_aver(3,:),'b'); plot(w_aver(4,:),'b'); title('權向量的估計'); xlabel('迭代次數n');ylabel('抽頭權值'); hold off;
相關推薦
Matlab之Kalman:用線性系統狀態方程,通過系統輸入輸出觀測資料,對系統狀態進行最優估計的演算法
卡爾曼濾波(Kalman filtering)一種利用線性系統狀態方程,通過系統輸入輸出觀測資料,對系統狀態進行最優估計的演算法。由於觀測資料中包括系統中的噪聲和干擾的影響,所以最優估計也
Django運維後臺的搭建之三:用url去精細定制與反向解析
django 反向解析 參數傳遞 url指向 上一篇文章裏,我們做了一個alionlineecs(阿裏雲線上環境服務器)的添加界面,但是要知道我們的計劃裏是有六個分支的,而alionlineecs僅僅是其中之一,要是每一個都這麽寫的話,那麽views.py肯定又臭又長,充滿了大量的復制片段。對
Django運維後臺的搭建之四:用bootstrap模板讓運維前臺變得更漂亮
html django bootstrap 靜態資源 我對於PHP和ajax是屬於二把刀的水平,所以做網頁前端肯定是比上天還難,但是我又想把網頁做的漂亮可愛,怎麽辦呢?我就只好去download別人的模板,在這裏我使用了bootstrap框架做的模板。各位可以去https://wrapboot
機器學習之路: python線性回歸 過擬合 L1與L2正則化
擬合 python sco bsp orm AS score 未知數 spa git:https://github.com/linyi0604/MachineLearning 正則化: 提高模型在未知數據上的泛化能力 避免參數過擬合正則化常用的方法: 在目
python之路:用戶輸入(一)
老師 用法 inf 代碼 用戶輸入 display 用戶 -- class python之路:用戶輸入(一) 好了,現在我學了點博客的用法,現在不會像以前的那麽土了。好吧,不多說,我要講課了。 今天,我會用情景實例給大家說這個用戶輸入。 情景是:你是IT教育的python帶
前端專案實踐之“道”:用對了方法,效率翻番
作者:個推Web前端首席前端架構師姜季廷 現在前端非常火熱,相關的技術更是層出不窮,前端人也在不停地學學學。那麼有沒有什麼“偷懶”的方式,幫助我們更加有效地完成編碼的KPI呢?本人從事前端開發工作多年,負責公司多個大型專案前端架構設計與落地實踐,本文就和大家聊一聊前端的“專案實踐之道”與“
ML之LiR之PLiR:懲罰線性迴歸PLiR演算法簡介、分類、程式碼實現之詳細攻略
ML之LiR之PLiR:懲罰線性迴歸PLiR演算法簡介、分類、程式碼實現之詳細攻略 PLiR演算法簡介 PLiR演算法分類 1、RiR VS Lasso迴歸  
開發者的進階之路:用語法樹來實現預編譯
能夠 項目 未來 部分 領域 編譯器 提高 cfb ima 如何在保證安全性的前提下,提升開發過程的效率,是每個開發者都在不斷探索的問題。借助語法樹,開發者能夠更好地展現和修改源程序代碼,優化開發環節,提高安全系數,還能進一步實現安卓預編譯。 本文基於個推高級研發工程師李健
天坑之路:用js給選中文字新增樣式
前言 本例基於react,但是實際上就是用原生js做的。相容性做到了IE9,但是按照這個思路做是可以做到IE8甚至更低的。 需求與最初的思路 當我拿到這個需求的時候以為很簡單,就是可以給頁面上的文章做記號,比如添加個下劃線,或者背景塗色做成熒光筆的樣子。 因為只需要相容IE9,所以window.get
PC軟體開發技術之二:用C#開發基於自動化介面的OPC客戶端
OPC全稱是Object Linking and Embedding(OLE) for Process Control,它的出現為基於Windows的應用程式和現場過程控制應用建立了橋樑。OPC作為一整套介面、屬性和方法的協議標準集,與具體的開發語言沒有關係。 1、OPC客戶端介面方式
開啟Scrapy專案之旅之二:用Scrapy進行專案爬蟲管理
1、進入scrapy資料夾下,建立Scrapy專案 scrapy startproject myfirstpjt 2、進入自己建立的scrapy專案中: cd myfirstpjt 進入後,我們可以對該爬蟲專案進行管理,可以通過工具命令實現,下節介紹。 3、爬蟲專
Muduo 網路程式設計示例之八:用 Timing wheel 踢掉空閒連線
Muduo 網路程式設計示例之八:Timing wheel 踢掉空閒連線 陳碩 (giantchen_AT_gmail) 這是《Muduo 網路程式設計示例》系列的第八篇文章,原計劃講檔案傳輸,這裡插入一點計劃之外的內容。 本文介紹如何使用 timing wheel 來踢
攻克論文寫作系列之6:用得好Theory
來源|刀熊說說 文|刀熊 本篇我們來具體談一談在寫實證文章的時候如何有效使用theory。 Data和theory 在一篇實證性文章(Empirical Article )中的關係。 在實證性文章裡,因為肯定會有data (資料)的收集和分析,我們要記得
LIDAR系列之2:用鐳射雷達檢測車道線
基於視覺系統的車道線檢測有諸多缺陷,首先是視覺系統對背景光線很敏感,諸如陽光強烈的林蔭道,車道線被光線分割成碎片,致使無法提取出車道線。其次,視覺系統需要車道線的標識完整,有些年久失修的道路,車道線標記不明顯,不完整,有些剛開通幾年的道路也是如此。第三,視覺系統需要車道線
Java資料結構之——棧:用連結串列實現
class Node<E>{ E data; Node<E> next = null; public Node(E data){ this.data = data; } } public class ListStack<
Java資料結構之——棧:用陣列實現
/** * This is an abstract data type interface for the stack. * This interface includes methods: * {@code pop},{@code push},{@code peek},{@code isEm
Hadoop學習筆記之三:用MRUnit做單元測試
引言 借年底盛宴品鑑之風,繼續抒我Hadoop之情,本篇文章介紹如何對Hadoop的MapReduce進行單元測試。MapReduce的開發週期差不多是這樣:編寫mapper和reducer、編譯、打包、提交作業和結果檢索等,這個過程比較繁瑣,一旦提交到分散式環境出了問題要定位除錯,重複這樣的過程實在無趣
Matlab之DNN:基於Matlab利用神經網路模型(epochs=10000000)預測勒布朗詹姆斯的2018年總決賽(騎士VS勇士)第一場得分、籃板、助攻
預測勒布朗詹姆斯的2018年NBA總決賽(騎士VS勇士)第一場得分數(33.6667)預測勒布朗詹姆斯的2018年NBA總決賽(騎士VS勇士)第一場籃板數(8.7333)預測勒布朗詹姆斯的2018年NB
Python學習之旅:用Python製作一個打字訓練小工具
一、寫在前面 說道程式設計師,你會想到什麼呢?有人認為程式設計師象徵著高薪,有人認為程式設計師都是死肥宅,還有人想到的則是996和 ICU。 別人眼中的程式設計師:飛快的敲擊鍵盤、酷炫的切換螢幕、各種看不懂的字元程式碼。 然而現實中的程式設計師呢?對於很多程式設計師來說,沒有百度和
Eclipse-ADT版本:用SDKmanager更新時 注意Android SDK Tools和Platforms要匹配,否則開發環境就不正常了
EclipseADT外掛開發Android應用程式時,一般使用SDK Manager來更新SDK Tools 和Android Platforms 。但是,如果SDK Tools的版本和Androi