日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

状态空间模型

發布時間:2023/12/31 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 状态空间模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 一、狀態空間模型簡述
狀態空間模型是動態時域模型,以隱含著的時間為自變量。狀態空間模型包括兩個模型:

一是狀態方程模型,反映動態系統在輸入變量作用下在某時刻所轉移到的狀態;
二是輸出或量測方程模型,它將系統在某時刻的輸出和系統的狀態及輸入變量聯系起來。


狀態空間模型分類

??狀態空間模型按所受影響因素的不同分為:
(1)確定性狀態空間模型
(2)隨機性狀態空間模型

??狀態空間模型按數值形式分為:
(1)離散空間狀態模型
(2)連續空間狀態模型

狀態空間模型按所描述的動態系統可以分為:
(1)線性的與非線性的
(2)時變的與時不變的

5.jpg (105.47 KB, 下載次數: 15)

下載附件

2015-6-11 14:22 上傳



二、系統的狀態空間
離散事件隨機性系統的概念是系統理論中最基本的概念。

離散事件隨機性系統的狀態,是指系統內部的可能運動狀態和可能儲能狀態。系統在k=k0時刻的狀態,是在k<k0時以系統內部儲能的積累結果,并在k=k0時以系統要素儲能的方式表現出來,還將影響系統在k>k0時的外部行為。


用隨機向量序列來描述系統在任一時刻的狀態向量,稱為狀態向量法,也稱為狀態空間法。狀態向量表示為:

6.jpg (10.91 KB, 下載次數: 15)

下載附件

2015-6-11 14:24 上傳



其中

7.jpg (6.88 KB, 下載次數: 14)

下載附件

2015-6-11 14:24 上傳

(k=1,2,1…,n)為第i個狀態向量。


三、系統的輸入輸出

輸入輸出狀態概念

引入狀態向量是為了對系統內部結構進行數學描述,但在許多情況下,系統的狀態是無法直接量測到的,有時甚至全部不能量測到。在實際工作中,能量測到的量之勢系統的輸入與輸出。

輸入輸出變量表示
系統的輸入也是隨時間而變的一組變量,表示為:

8.jpg (9.92 KB, 下載次數: 13)

下載附件

2015-6-11 14:26 上傳



稱為輸入向量,其分量

9.jpg (8.07 KB, 下載次數: 12)

下載附件

2015-6-11 14:27 上傳

(i=1,2,…,r)稱為輸入變量。

系統所受的隨機干擾也是隨時間而變的一組變量,表示為

10.jpg (11.01 KB, 下載次數: 15)

下載附件

2015-6-11 16:02 上傳

稱為系統的動態模型噪聲,它是系統的一種特殊輸入向量。
系統的輸出也是隨時間而變的一組變量,表示為:

11.jpg (9.29 KB, 下載次數: 11)

下載附件

2015-6-11 16:31 上傳

稱為輸出向量,其分量? ???(i=1,2,…,m)稱為輸入變量。
量測系統也會受到隨機噪聲的污染,表示為:

12.jpg (8.93 KB, 下載次數: 15)

下載附件

2015-6-11 16:32 上傳


稱為系統的量測噪聲。



四、狀態空間模型


狀態空間模型定義
狀態空間模型是描述動態系統的完整模型,它表達了由于輸入引起系統內部狀態的變化,并由此使輸出發生的變化。


狀態空間模型的不同形式
如,線性時不變模型的狀態方程可表示為:

13.jpg (5.84 KB, 下載次數: 10)

下載附件

2015-6-11 16:34 上傳


輸出方程為:

14.jpg (3.36 KB, 下載次數: 12)

下載附件

2015-6-11 16:34 上傳




五、狀態空間模型的建立
? 例 1? ? 某養魚場為了反映池塘魚種的變化,請你幫助建立狀態空間模型。
解答: (1)取狀態向量X(k)為k時刻3個魚種的數量:

15.jpg (19.19 KB, 下載次數: 13)

下載附件

2015-6-11 16:39 上傳

輸入向量為:

16.jpg (25.87 KB, 下載次數: 14)

下載附件

2015-6-11 16:39 上傳



(2)狀態轉移矩陣

17.jpg (8.44 KB, 下載次數: 15)

下載附件

2015-6-11 16:40 上傳

式中: p1,p2,p3為鯽魚、青魚和鯉魚的生長率,這里為p1=0.1,p2=0.13,p3=0.08。
(3)輸入矩陣仍定為常陣

18.jpg (8.26 KB, 下載次數: 11)

下載附件

2015-6-11 16:40 上傳



(4)輸出矩陣或預測矩陣C為3×3維單位陣,這樣輸出向量或量測向量就等同于狀態向量,狀態空間模型:

19.jpg (7.91 KB, 下載次數: 13)

下載附件

2015-6-11 16:42 上傳


即:

20.jpg (33.42 KB, 下載次數: 12)

下載附件

2015-6-11 16:42 上傳



21.jpg (4.77 KB, 下載次數: 14)

下載附件

2015-6-11 16:42 上傳



22.jpg (13.19 KB, 下載次數: 11)

下載附件

2015-6-11 16:42 上傳





Kalman濾波簡介

Kalman濾波是一種線性濾波與預測方法,原文為:A New Approach to Linear Filtering and Prediction Problems。文章推導很復雜,看了一半就看不下去了,既然不能透徹理解其原理,但總可以通過實驗來理解其具體的使用方法。


Kalman濾波分為2個步驟,預測(predict)和校正(correct)。預測是基于上一時刻狀態估計當前時刻狀態,而校正則是綜合當前時刻的估計狀態與觀測狀態,估計出最優的狀態。預測與校正的過程如下:


預測:

1.png (6.58 KB, 下載次數: 12)

下載附件

2015-6-11 13:48 上傳

校正:

2.png (11.75 KB, 下載次數: 15)

下載附件

2015-6-11 13:48 上傳


公式1是狀態預測,公式2是誤差矩陣預測,公式3是kalman增益計算,公式4是狀態校正,其輸出即是最終的kalman濾波結果,公式5是誤差矩陣更新。各變量說明如下表:


4.jpg (120.25 KB, 下載次數: 12)

下載附件

2015-6-11 13:48 上傳


算法實現與分析

Kalman濾波最復雜的計算應該就是公式3中的矩陣求逆,考慮到實現的方便性,采用matlab來簡單實現,本文主要是分析kalman濾波中各個變量的作用和對濾波結果的影響。具體代碼如下:


[C] 純文本查看 復制代碼 ?
1 2 3 4 5 6 7 8 9 function filter = Kalman(filter) ??%predict ??predict_x = filter.A * filter.x + filter.B * filter.u; ??filter.P = filter.A * filter.P * filter.A' + filter.Q; ??%correct ??filter.K = filter.P * filter.H' / (filter.H * filter.P * filter.H' + filter.R); ??filter.x = predict_x + filter.K * (filter.z - filter.H * predict_x); ??filter.P = filter.P - filter.K * filter.H * filter.P; end


在matlab中,kalman濾波實際上就是上面那5個公式,而難點卻是在測試代碼中針對不同問題各個變量的初始化上,下面來逐個分析。


1.建立模型,明確觀測量,系統狀態以及其轉移方程(下面這段公式太多,通過word寫好后截圖)


3.png (121.08 KB, 下載次數: 13)

下載附件

2015-6-11 13:48 上傳


2.初始化噪聲協方差矩陣

經過上面一步,只有PQRK四個矩陣還未確定了。顯然增益矩陣K是不需要初始化的,P是誤差矩陣,初始化可以是一個隨機的矩陣或者0,只要經過幾次的處理基本上就能調整到正常的水平,因此也就只會影響前面幾次的濾波結果。


Q和R分別是預測和觀測狀態協方差矩陣,一般可以簡單認為系統狀態各維之間(即上面的a和b)相互獨立,那么Q和R就可以設置為對角陣。而這兩個對角線元素的大小將直接影響著濾波結果,若Q的元素遠大于R的元素,則預測噪聲大,從而更相信觀測值,這樣可能使得kalman濾波結果與觀測值基本一致;反之,則更相信預測,kalman濾波結果會表現得比較規整和平滑;若二者接近,則濾波結果介于前面兩者之間,根據實驗效果看也缺乏實際使用價值。


以上幾個矩陣確定后,對于狀態x,由于0時刻我們沒有任何關于該系統的知識,可以使用0時刻的測量值z0來初始x0,預測從k=1開始;也可以初始化-1時刻的狀態,當然這個狀態實際是未知的,也就可隨機取。2種方式都可以,但使用0時刻測量值來初始化狀態,可以使得前面幾次預測更準確。


3.實驗分析


首先使用下面代碼生成一組數據存在z.mat中:

[C] 純文本查看 復制代碼 ?
1 2 3 4 5 6 7 8 interval = pi/18; t = 1:interval:100*pi; len = size(t, 2); a = t + 4 * (rand(1,len)-0.5); b = t .* sin(t/10) +? 10 * (rand(1,len)-0.5); z = [a; b]; save('z.mat','z'); plot(z(1,:),z(2,:),'o')


可以看出其近似為一條振幅不斷增大的正弦曲線疊加一個隨機噪聲。繪制出來如下:

4.png (23.9 KB, 下載次數: 10)

下載附件

2015-6-11 13:48 上傳


如果使用上面推導的恒定狀態系統模型,代碼與實驗結果如下:

[C] 純文本查看 復制代碼 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 clear close all clc dim_observe = 2;????????? %觀測值維數 n = dim_observe;? %狀態維數,觀測狀態每個維度都有1個速度,故需乘2 filter.A = eye(n);%[1,0,1,0;0,1,0,1;0,0,1,0;0,0,0,1]; filter.B = 0; filter.u = 0; filter.P = eye(n); filter.K = zeros(n); filter.H = eye(n);%[1,0,0,0;0,1,0,0]; cQ = 1e-8; cR = 1e-2; filter.Q = eye(n) * cQ;??????? %這里簡單設置Q和R對角線元素都相等,設為不等亦可 filter.R = eye(dim_observe) * cR; filter.x = zeros(n,1); %初始狀態x0 load('z.mat'); figure(1),subplot(2,2,1), t = 1; out = []; for i=1:size(z,2) ??filter.z = z(:,i); ??filter = Kalman(filter); ??plot(filter.x(1),filter.x(2),? 'r*');hold on??????? ??plot(filter.z(1),filter.z(2),? 'bo');??????? hold on ??out=[out filter.x]; %???????? pause(.5) end figure(1), str = sprintf('cQ = %e, cR = %e', cQ, cR); title(str) %畫局部放大 subplot(2,2,2), plot(out(1,:),out(2,:),? 'r*');hold on??????? plot(z(1,:),z(2,:),? 'bo');??????? hold on axis([120 170 80 200])


5.png (32.82 KB, 下載次數: 13)

下載附件

2015-6-11 13:48 上傳


可以看出濾波結果完全滯后于測量數據,其根本原因在于建立的模型存在問題。


如果采用上面推導的物體運動模型則只需要修改部分代碼,主要是矩陣A和H,以及其他矩陣對應的維數,具體如下:

[C] 純文本查看 復制代碼 ?
1 2 3 4 5 6 7 8 dim_observe = 2;????? %觀測值維數 n = 2 * dim_observe;? %狀態維數,觀測狀態每個維度都有1個速度,故需乘2 filter.A = [1,0,1,0;0,1,0,1;0,0,1,0;0,0,0,1]; filter.B = 0; filter.u = 0; filter.P = eye(n); filter.K = zeros(n); filter.H = [1,0,0,0;0,1,0,0];


運行結果如下圖,藍色為觀測數據,紅色為kalman濾波數據,右側為局部放大圖。可以看出經過濾波后的數據相當平滑,這里Q和R中元素的量級分別為cQ和cR,下圖結果可以看到cR比cQ多了6個數量級。

6.png (39.06 KB, 下載次數: 14)

下載附件

2015-6-11 13:48 上傳

(1)


增加幾組結果用于對比分析,對于的cQ和cR見圖的標題。

7.png (39.18 KB, 下載次數: 14)

下載附件

2015-6-11 13:48 上傳

(2)


8.png (40.65 KB, 下載次數: 13)

下載附件

2015-6-11 13:48 上傳

(3)


9.png (41.63 KB, 下載次數: 14)

下載附件

2015-6-11 13:48 上傳

(4)


10.png (41.2 KB, 下載次數: 13)

下載附件

2015-6-11 13:48 上傳

(5)


11.png (41.14 KB, 下載次數: 11)

下載附件

2015-6-11 13:48 上傳

(6)


首先看圖1和2,cR與cQ大小均相差了3個數量級,而二者的比值相同,則kalman濾波結果相同。


再看圖2~圖6,cR/cQ在不斷減小,kalman濾波結果的平滑性也在不斷降低,到圖5和6中,濾波結果完全和觀測值相同,說明此時kalman濾波已經完全相信觀測值了。原因在于cR/cQ過小,系統認為預測噪聲的方差很大,不值得信賴,而觀測值的噪聲方差小,可信度高。


總結

根據上面的實驗結果,可以看出Kalman濾波應用中的幾個問題:


1.模型建立的正確性從根本上決定了濾波效果的正確性。


上面使用物體靜止模型進行濾波,結果完全不對,而使用勻速運動模型則能達到較好的效果。從根本上講,上面的數據也不是勻速運動的,為何結果會基本正確?看看第一個使用靜止模型的濾波結果,雖然我們假定了物體是靜止的,但由于觀測數據的作用,kalman濾波結果也會有相應的運動而不是完全靜止,也就是說濾波器在不停地修正這個狀態,而在勻速運動模型中,物體的速度我們認為不變,但同樣地kalman濾波器也會不停地修正這個速度,濾波器中計算的速度實質的偏離了真實速度的,因此最終也會有相應的偏差,不過這個偏差在我們容許范圍內,也就可以大膽使用了。


如果能確定物體是勻變速直線運動,使用相應帶加速度的模型會得到更準確的效果。但是越嚴格的模型其適用范圍也相應越小。


2.影響濾波結果平滑性的因素是cR/cQ,這個值反映了我們對于預測和觀測值的信任程度;其值越大則越相信預測結果,濾波結果平滑性好;反之則越相信觀測結果,濾波結果越偏向于觀測值。一般我們使用kalman濾波器是為了能平滑數據的波動,因此應盡量保證cR/cQ稍大,上面的測試結果該值在1e4以上數據較為平滑。





總結

以上是生活随笔為你收集整理的状态空间模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。