拓端tecdat|matlab穩(wěn)態(tài)和時(shí)變卡爾曼濾波器Kalman filter的設(shè)計(jì)和仿真植物動(dòng)力學(xué)模型案
原文鏈接:http://tecdat.cn/?p=24947
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
本案例研究說明了卡爾曼濾波器的設(shè)計(jì)和仿真。考慮穩(wěn)態(tài)和時(shí)變卡爾曼濾波器。
植物動(dòng)力學(xué)
考慮一個(gè)在輸入u[n]上有加性高斯噪聲w[n]。
此外,讓 yv[n] 是輸出 y[n] 的噪聲測量,其中 v[n] 表示測量噪聲:
離散卡爾曼濾波器
該問題的穩(wěn)態(tài)卡爾曼濾波器方程如下。
測量更新:
時(shí)間更新:
在這些方程中:
?x[n?n?1] 是 x[n] 的估計(jì)值,給定過去直到 yv[n?1] 的測量值。
?x[n?n] 是基于最后一次測量 yv[n] 的更新估計(jì)。
給定當(dāng)前估計(jì) ?x[n?n],時(shí)間更新預(yù)測下一個(gè)樣本n??+ 1的狀態(tài)值?(提前一步預(yù)測)。然后,測量更新基于新的測量值 yv[n+1] 調(diào)整該預(yù)測。修正項(xiàng)是新值的函數(shù),即 y[n+1] 的測量值和預(yù)測值之間的差異。這種差異由下式給出:
給定噪聲協(xié)方差,選擇創(chuàng)新增益 M 以最小化估計(jì)誤差的穩(wěn)態(tài)協(xié)方差:
您可以將時(shí)間和測量更新方程組合到一個(gè)狀態(tài)空間模型中,即卡爾曼濾波器:
該濾波器生成 yn 的最佳估計(jì) ?y[n?n]。請注意,過濾器狀態(tài)是 ?x[n?n?1]。
穩(wěn)態(tài)設(shè)計(jì)
您可以使用函數(shù) 設(shè)計(jì)上述穩(wěn)態(tài)卡爾曼濾波器?kalman
。首先指定帶有過程噪聲的工廠模型:
這里,第一個(gè)表達(dá)式是狀態(tài)方程,第二個(gè)是測量方程。
以下命令指定此工廠模型。采樣時(shí)間設(shè)置為 -1,以將模型標(biāo)記為離散模型而不指定采樣時(shí)間。
Pla = s
假設(shè)?Q??=??R??= 1,設(shè)計(jì)離散卡爾曼濾波器。
kalm
此命令返回kalmf
?濾波器的狀態(tài)空間模型?以及創(chuàng)新增益?M
。
M
kalmf
?的輸入?是?u?和 yv,以及。輸出是工廠輸出和狀態(tài)估計(jì),ye=?y[n?n] 和 ?x[n?n]。
因?yàn)槟鷮敵龉烙?jì) ye 感興趣,所以選擇第一個(gè)輸出?kalmf
?并丟棄其余的。
kalmf
要查看濾波器的工作原理,請生成一些輸入數(shù)據(jù)和隨機(jī)噪聲,并將濾波后的因變量 ye 與真實(shí)因變量?y 進(jìn)行比較。您可以單獨(dú)生成每個(gè)因變量,也可以同時(shí)生成兩者。要分別模擬每個(gè)因變量,先單獨(dú)使用?植物,然后將植物和過濾器連接在一起。接下來詳細(xì)介紹聯(lián)合仿真替代方案。
下面的框圖顯示了如何生成真實(shí)輸出和過濾輸出。
您可以使用函數(shù)和?構(gòu)建此框圖的狀態(tài)空間模型?。首先構(gòu)建一個(gè)完整的工廠模型,以?u、??w、??v?作為輸入,??y?和 yv(測量值)作為輸出。
s(a,b,c,d,-1,'iptnme',{'u' 'w' 'v'},'ouutnae',{'y' 'yv'});
然后形成下圖的并聯(lián)。
pal(P,kf,1,1,[],[]);
最后,通過將設(shè)備輸出 yv 連接到具有正反饋的過濾輸入 yv 來關(guān)閉傳感器回路。
Smoe = feedback; % 圍繞輸入#4和輸出#2關(guān)閉循環(huán)
SiMe = SMdl % 從I/O列表中刪除yv
生成的仿真模型將?w、??v、??u?作為輸入,??y?和 ye 作為輸出。查看屬性進(jìn)行驗(yàn)證。
InuNe
OupNme
?
您現(xiàn)在已準(zhǔn)備好模擬過濾器。生成正弦輸入?u?并處理和測量噪聲向量?w?和?v。
n = length
w = sqrt*randn
v = sqrt*randn
模擬因變量。
[out,x] = lsim
y = out; % 真實(shí)響應(yīng)
ye = out; % 濾過的響應(yīng)
yv = y + v; % 測量響應(yīng)
以圖形方式比較真實(shí)和過濾后的因變量。
plot
xlabel
title
subplot
xlabel
第一個(gè)圖顯示了真實(shí)因變量?y??(虛線)和過濾后的輸出 ye(實(shí)線)。第二個(gè)圖將測量誤差(點(diǎn)劃線)與估計(jì)誤差(實(shí)線)進(jìn)行比較。該圖顯示噪音水平已顯著降低。這是通過計(jì)算協(xié)方差誤差來確認(rèn)的。濾波前的誤差協(xié)方差(測量誤差)為:
MEro = sum/length
濾波后的誤差協(xié)方差(估計(jì)誤差)降低:
EsrCv = sum/length
時(shí)變卡爾曼濾波器
時(shí)變卡爾曼濾波器是對時(shí)變系統(tǒng)或具有非平穩(wěn)噪聲協(xié)方差的 LTI 系統(tǒng)的穩(wěn)態(tài)濾波器的推廣。
考慮以下工廠狀態(tài)和測量方程。
時(shí)變卡爾曼濾波器由以下遞歸給出:
測量更新:
時(shí)間更新:
這里,?x[n?n?1] 和 ?x[n?n] 如前所述。此外:
為簡單起見,表示狀態(tài)空間矩陣的時(shí)間依賴性的下標(biāo)已被刪除。
給定初始條件 x[1?0] 和 P[1?0],您可以迭代這些方程來執(zhí)行過濾。您必須在每個(gè)時(shí)間樣本更新狀態(tài)估計(jì) x[n?.] 和誤差協(xié)方差矩陣 P[n?.]。
時(shí)變設(shè)計(jì)
要實(shí)現(xiàn)這些濾波器遞歸,首先要生成噪聲輸出測量值。使用?之前產(chǎn)生的過程噪聲?w
?和測量噪聲?v
。
y = lsim
假設(shè)以下初始條件:
用for
?循環(huán)實(shí)現(xiàn)時(shí)變?yōu)V波器?。
P = B*Q*B'; %初始誤差協(xié)方差
x = zeros; % 狀態(tài)的初始條件
for i = 1:length
% 測量更新
erv(i) = C*P*C';
% 時(shí)間更新
x = A*x + B*u;
以圖形方式比較真實(shí)輸出和估計(jì)輸出。
subplot(211)
subplot
xlabel
第一個(gè)圖顯示了真實(shí)因變量?y??(虛線)和過濾后的因變量 ye(實(shí)線)。第二個(gè)圖將測量誤差(點(diǎn)劃線)與估計(jì)誤差(實(shí)線)進(jìn)行比較。
時(shí)變?yōu)V波器還估計(jì)errcov
?每個(gè)樣本的估計(jì)誤差 y-ye的協(xié)方差?。繪制它以查看您的濾波器是否達(dá)到穩(wěn)定狀態(tài)(正如您對固定輸入噪聲所期望的那樣)。
subplot(211)
plot
從這個(gè)協(xié)方差圖中,您可以看到輸出協(xié)方差確實(shí)在大約五個(gè)樣本中達(dá)到了穩(wěn)定狀態(tài)。從那時(shí)起,您的時(shí)變?yōu)V波器具有與穩(wěn)態(tài)版本相同的性能。
與由實(shí)驗(yàn)數(shù)據(jù)導(dǎo)出的估計(jì)誤差協(xié)方差比較:
Esro = sum/length
該值小于理論值?errcov
?,接近穩(wěn)態(tài)設(shè)計(jì)獲得的值。
最后,注意最終值 M[n] 和?創(chuàng)新增益矩陣的穩(wěn)態(tài)值?M重合。
Mn
M
?
最受歡迎的見解
1.matlab使用經(jīng)驗(yàn)?zāi)J椒纸鈋md 對信號(hào)進(jìn)行去噪
2.Matlab使用Hampel濾波去除異常值
3.matlab偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.matlab預(yù)測ARMA-GARCH 條件均值和方差模型
5.matlab中使用VMD(變分模態(tài)分解)?
6.matlab使用貝葉斯優(yōu)化的深度學(xué)習(xí)
7.matlab貝葉斯隱馬爾可夫hmm模型
8.matlab中的隱馬爾可夫模型(HMM)實(shí)現(xiàn)
9.matlab實(shí)現(xiàn)MCMC的馬爾可夫切換ARMA – GARCH模型