• A=[1 -0.5 0.7];
B=[0 1 0.5];
th0=poly2th(A,B);
u=idinput(500,'rbs');
y=idsim([u,randn(500,1)],th0);
z=[y u];
ir=cra(z);
System Identification Toolbox
0 2 4 6 8 10 12 14 16 18 20
-1 -0.5 0 0.5 1
1.5 Impulse response estimate
lags
System Identification Toolbox
• A=[1 -0.5 0.7];B=[0 1 0.5]; m0=idpoly(A,B);
u=iddata([],idinput(300,'rbs'));e=iddata([],idinput(300));
y=sim(m0,[u e]);z=[y u];m=arx(z,[2 2 1]) bode(m)
• Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
• A(q) = 1 - 0.4631 q^-1 + 0.6884 q^-2
•
• B(q) = 1.039 q^-1 + 0.5507 q^-2
System Identification Toolbox
•
10-2 10-1 100 101
10-1 100 101
Amplitude
From u1 to y1
10-2 10-1 100 101
-300 -250 -200 -150 -100 -50 0
Phase (degrees)
Frequency (rad/s)
卡爾曼濾波估測理論介紹
我們通常利用一些觀測方式設法得到系統的狀態描述。
由於觀測器也受到隨機干擾的影響,使得量測值亦產生 誤差。估測問題的實質就是如何從量測值中精確的確定 系統狀態的真實值及變化過程。
輸入事先之估測值 及 之初值
擴展型卡爾曼濾波器
模擬結果與分析
• Simulation1. 一階二階系統實驗
模擬結果與分析
• Simulation1. 一階二階系統實驗
• 探點極點位置及阻尼大小對 response 的影響
模擬結果與分析
• 系統識別的基本程序
Step1. 識別實驗的設計
硬體 , 識別輸入 , 取樣週期的選定 Step2. 識別實驗
識別對象之輸入輸出資料的收集 Step3. 輸入輸出資料的前處理
1. 時間領域 : 異常數據的去除 , 資料的擷取 2. 頻率領域 : 濾波 , 刪除
模擬結果與分析
• 系統識別的基本程序 Step4. 結構識別
1. 模型的形式 2. 線性 , 離散時間 , 參數選定 Step5.( 線性 , 離散時間 ) 系統辨識法
1. 非參數模型辨識法 2. 參數模型辨識法 Step6. 模型妥當性之評價
1. 時間領域 ,S 或 Z 領域 , 頻率領域 2. 識別殘差的白色性實驗
3. 使用基於識別模型的補償氣之閉迴路測試
模擬結果與分析
• Simulation2. 以吹風機的模型為識別對象 ! 此時輸入 為加入電熱線電壓 , 輸出為出風口的溫度
模擬結果與分析
• Simulation2. 系統識別的基本程序 Step1. 識別實驗的設計
輸入信號 :PWM 二值信號 , 取樣週期 :80ms Step2. 識別實驗
從所收集的 1000 筆資料 , 取前 300 筆來作識 別實驗
Step3. 輸入輸出資料的前處理
由輸入輸出資料知 , 信號含有 DC+AC 信號 , 所 以去
DC
模擬結果與分析
• %Step2 load dryer2
z2=[y2(1:300) u2(1:300)];
figure(1)
idplot(z2,1:300,0.08);
%Step3 figure(2)
z3=dtrend(z2) % 去 DC idplot(z3,1:300,0.08);
模擬結果與分析
模擬結果與分析
模擬結果與分析
Step4. 結構識別
使用非參數模型識別法來推測脈衝響應 Step5.( 線性 , 離散時間 ) 系統辨識法
脈衝響應前三個推測為 0, 所以延遲時間為 3, 用 LS
來推測 ARX 模型中的參數 !
y(k)+a1y(k-1)+a2y(k-2)=b1u(k-3)+b2u(k-4)+e(k)
Step6. 模型妥當性之評價
使用 700-1000 筆資料 , 來驗證參數的正確性
模擬結果與分析
• %Step4 figure(3)
ir=cra(z3); % 推測脈衝響應
%Step5
th=arx(z3,[2 2 3]); % 用 LS 來推測 ARX 模型中的參 數 !
th=sett(th,0.08);
present(th)
模擬結果與分析
• %Step6
u=dtrend(u2(800:900));
y=dtrend(y2(800:900));
yh=idsim(u,th); % 驗證參數的正確性
figure(4) plot(y) hold on
plot(yh,'y--')
模擬結果與分析
• 相關法分析的頻率響應
0 2 4 6 8 10 12 14 16 18 20
-0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1 0.12
0.14 Impulse response estimate
lags
模擬結果與分析
• 藍色線為原始信號 , 黃色線為識別參數的輸出值
0 20 40 60 80 100 120
-1.5 -1 -0.5 0 0.5 1 1.5
模擬結果與分析
模擬結果與分析
• Simulation3. 系統識別的基本程序 Step1. 識別實驗的設計
輸入信號 :PWM 二值信號 , 取樣週期 :0.1s Step2. 識別實驗
取 400 筆來作識別實驗 Step3.( 連續時間 ) 系統辨識法
d/dtx(t)=Ax(t)+bu(k)+Kw(t) y(t)=Cx(t)+du(k)+w(t)
模擬結果與分析
• 原始輸入輸出 ( 角位移 ) 信號
0 5 10 15 20 25 30 35 40 45
-15 -10 -5 0 5 10
Time Angle
0 5 10 15 20 25 30 35 40 45
-10 -5 0 5 10
Voltage
Time
模擬結果與分析
模擬結果與分析
• clear all;
close all;
load dcmdata
z = iddata(y,u,0.1); % The IDDATA object z.InputName = 'Voltage';
z.OutputName = {'Angle';'AngVel'};
plot(z)
As = [0 1; 0 NaN];
Bs = [0; NaN];
Cs = [1 0; 0 1];
Ds = [0; 0];
Ks = [0 0;0 0];
X0s = [0;0];
模擬結果與分析
• ms=modstruc(As,Bs,Cs,Ds,Ks,X0s);
th_guess=[-1 0.28] % 初始值
dcmodel=ms2th(ms,‘c’,th_guess,[],0.1); %c 為連續時間 ,0.1 為取樣週期 dcmodel=pem(z,dcmodel,'trace','on');
present(dcmodel)
>>
dx/dt = A x(t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t)
模擬結果與分析
A = [ 0 1
0 -4.0131 +-0.032]
B = [0
1.0023 +-0.008]
C = [1 0 0 1]
D=[0 0]
K = [0 0
0 0]
x(0) = [0 0]
模擬結果與分析
模擬結果與分析
• 左圖載體軌跡 ( 藍色為原始軌跡 , 綠色為估測軌跡 )
• 右圖為載體速度 ( 藍色為原始速度 , 綠色為估測速度 )
0 500 1000 1500 2000 2500
0