Matlab z 15 p 11 2 2 dcgain
系統識別 Matlab 於控制系統之應用 z 1=[-5]; p 1=[-1 -2 -2]; dcgain 1=19. 9597; sys 1=zpk(z 1, p 1, dcgain 1); sys 2=feedback(sys 1, 1, -1); step(sys 2); impulse(sys 2) rlocus(sys 2);
系統識別 Matlab 於控制系統之應用 • G=tf([5], [1 2 25]); figure(1) nyquist(G) • figure(2) Bode(G)
系統識別 System Identification Toolbox • A=[1 -1. 5 0. 7]; B=[0 1 0. 5] ; C=[1 -1 0. 2]; m=idpoly(A, B, C) Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + C(q)e(t) A(q) = 1 - 1. 5 q^-1 + 0. 7 q^-2 B(q) = q^-1 + 0. 5 q^-2 C(q) = 1 - q^-1 + 0. 2 q^-2
系統識別 System Identification Toolbox • A=[1 -0. 5 0. 7]; B=[0 1 0. 5]; th 0=poly 2 th(A, B); u=idinput(500, 'rbs'); y=idsim([u, randn(500, 1)], th 0); z=[y u]; ir=cra(z);
系統識別 System Identification Toolbox
系統識別 System Identification Toolbox • A=[1 -0. 5 0. 7]; B=[0 1 0. 5]; m 0=idpoly(A, B); u=iddata([], idinput(300, 'rbs')); e=iddata([], idinput(300)); y=sim(m 0, [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 •
系統識別 模擬結果與分析 • %Step 2 load dryer 2 z 2=[y 2(1: 300) u 2(1: 300)]; figure(1) idplot(z 2, 1: 300, 0. 08); %Step 3 figure(2) z 3=dtrend(z 2) %去DC idplot(z 3, 1: 300, 0. 08);
系統識別 模擬結果與分析 • %Step 6 u=dtrend(u 2(800: 900)); y=dtrend(y 2(800: 900)); yh=idsim(u, th); figure(4) plot(y) hold on plot(yh, 'y--') %驗證參數的正確性
系統識別 模擬結果與分析 • clear all; close all; load dcmdata z = iddata(y, u, 0. 1); % The IDDATA object z. Input. Name = 'Voltage'; z. Output. Name = {'Angle'; 'Ang. Vel'}; plot(z) As = [0 1; 0 Na. N]; Bs = [0; Na. N]; Cs = [1 0; 0 1]; Ds = [0; 0]; Ks = [0 0; 0 0]; X 0 s = [0; 0];
系統識別 模擬結果與分析 • ms=modstruc(As, Bs, Cs, Ds, Ks, X 0 s); th_guess=[-1 0. 28] % 初始值 dcmodel=ms 2 th(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)
- Slides: 51