clear
close all
echo on
% -------------------------------------------------------------------------
% Irányítástechnika II.
% 3. számítógépes gyakorlat
% Frekvenciatartománybeli analízis
% -------------------------------------------------------------------------
% Folytonos idejû lineáris rendszer megadása átviteli függvényével:
% SISO rendszer esetén pl:
%
%             s + 0.6
% W(s) = -----------------
%        s^2 + 1.4 s + 0.2
%
% -------------------------------------------------------------------------
% Számláló és nevezõ polinomok megadásával:
% -------------------------------------------------------------------------
%
num = [1 .6];
den = [1 1.4 .2];
%
sys_tf = tf(num,den)
%
pause
% -------------------------------------------------------------------------
% Zérus, pólus megadás megadásával:
% -------------------------------------------------------------------------
%
%                   (s+0.6)
%  W(s) = 1 * --------------------
%             (s+1.238) (s+0.1615)
%
z = -.6;
p = [-1.2385 -.1615];
k = 1;
%
sys_zpk = zpk(z,p,k)
%
pause
% -------------------------------------------------------------------------
% Folytonos idejû lineáris rendszer megadása állapotegyenletével:
% -------------------------------------------------------------------------
% 
% dx/dt = Ax(t) + Bu(t)
%  y(t) = Cx(t) + Du(t)
%
A = [-1 1; .2 -.4];
B = [1;0];
C = [1 1];
D = 0;
%
sys_ss = ss(A,B,C,D)
%
pause
%
% -------------------------------------------------------------------------
% A különbözõ megadási módok átszámítása egymásba:
% -------------------------------------------------------------------------
%
% Konverziós függvények:
% ---------------------------
% zp2tf
% ss2tf
% ---------------------------
[num,den] = zp2tf(z,p,k)
[num,den] = ss2tf(A,B,C,D)
%
pause
% ---------------------------
% tf2zp
% ss2zp
% ---------------------------
%
[z,p,k] = tf2zp(num,den)
[z,p,k] = ss2zp(A,B,C,D)
%
pause
% ---------------------------
% tf2ss
% zp2ss
% ---------------------------
%
[a1, b1, c1, d1] = tf2ss(num,den)
[a2, b2, c2, d2] = zp2ss(z,p,k)
%
pause
% -------------------------------------------------------------------------
% A definiált sys változókkal (strukturákkal) közvetlenül is dolgozhatunk
% -------------------------------------------------------------------------
%
tf(sys_zpk)
tf(sys_ss)
%
pause
%
zpk(sys_tf)
zpk(sys_ss)
%
pause
%
ss(sys_tf)
ss(sys_zpk)
%
pause
% -------------------------------------------------------------------------
% Válasz számítása az átviteli fügvény segítségével:
% Y(s) = W(s)U(s)   inverz Laplace transzformálásával  
% -------------------------------------------------------------------------
%
% Az átviteli függvény:
num = [1 .6];
den = [1 1.4 .2];
tf(num,den)
%
% A bemeneti jel legyen Dirac impulzus: U(s) = 1  vagyis Y(s) = W(s) 
%
%  Y(s)-t részlettörtekre bontjuk:
[r,p,k] = residue(num,den)
%
pause
% -------------------------------------------------------------------------
% A válasz analitikus számítása és összehasonlítása az impulse()
% eredményével
% -------------------------------------------------------------------------
%
t=0:.1:30;
y = r(1)*exp(p(1).*t)+r(2)*exp(p(2).*t);
impulse(num,den)
hold on
plot(t,y,'r--')
hold off
%
pause
% -------------------------------------------------------------------------
% Komplex gyökökre is mûködik, a válasz valós idõfüggvény lesz
% -------------------------------------------------------------------------
%
num = [1 .6];
den = [1 1.4 2];
roots(den)
tf(num,den)
%
% A bemeneti jel legyen Dirac impulzus: U(s) = 1  vagyis Y(s) = W(s) 
%  Y(s)-t részlettörtekre bontjuk:
[r,p,k] = residue(num,den)
%
% -------------------------------------------------------------------------
% A válasz analitikus számítása és összehasonlítása az impulse()
% eredményével
% -------------------------------------------------------------------------
%
t=0:.01:9;
y = r(1)*exp(p(1).*t)+r(2)*exp(p(2).*t);
impulse(num,den)
hold on
plot(t,y,'r--')
hold off
pause
% -------------------------------------------------------------------------
% Bode diagram
% -------------------------------------------------------------------------
%
sys = tf(num,den);
bode(sys)
%
pause
% -------------------------------------------------------------------------
% Az átviteli függvény abszolut értékének és fázisszögének ábrázolása 
% -------------------------------------------------------------------------
w = logspace(-2,2,200);
W = polyval(num,j*w)./polyval(den,j*w);
abs_W_dB = 20*log10(abs(W));
phase_W_deg = 180/pi*angle(W);
subplot(2,1,1); semilogx(w,abs_W_dB);
subplot(2,1,2); semilogx(w,phase_W_deg);
%
pause
% -------------------------------------------------------------------------
% MIMO rendszer esetén W(s) mátrix:
%
%        [ W11(s)  W12(s) ]
% W(s) = [                ]
%        [ W21(s)  W22(s) ]
%
% -------------------------------------------------------------------------
%
A = [-1 -2 -3; 4 -5 6; 7 8 -9];
B = [10 11; 12 13; 14 15];
C = [16 17 18; 19 20 21];
D = [22 23; 24 25];
%
sys = ss(A,B,C,D);
tf(sys)
%
pause
% ---------------------
% Konverziós fügvényekkel meg kell adni, melyik bemenetre vonatkozik a
% számítás
%
[num1,den1] = ss2tf(A,B,C,D,1)
[num2,den2] = ss2tf(A,B,C,D,2)
%
pause

echo off;

