Soubor s demonstrací vybraných funkcí používaných v tomto kurzu
!!! Tento soubor může obsahovat zvyklosti MATLABu starší verze – slouží jako doporučení !!!
% modifikovan 'keywords.m' pro pouziti v MATLABu 5
% po procentech jsou komentare
% je mozne ziskat jednoradkovy help pomoci help adresar
help control
% pause zastavi vykonavani do okamziku zmacknuti nejake klavesy
pause
% a help na danou funkci
help bode
% smazani vsech promennych ve workspace
clear
% smazani vsech promennych, vcetne globalnich a prelozenych funkci
clear all
% smazani vsech oken grafu
close all
% smazani obrazovky matlabu
clc
% zadavani polynomu je seznam koeficientu v hranatych zavorkach
% pokud neni ukonceno strednikem pak se vytiskne
cit = [6 .2]
jmen = [96 20 1];
pause
% vytvori prenosovou funkci z polynomu
sys = tf(cit,jmen)
pause
% a zpetny prevod na citatel a jmenovatel z přenosu
[cit1,jmen1] = tfdata(sys,'v');
pause
% zadani prenosove funkce pomoci vzorce
% nastaveni “operatoru” pro zadavani přenosu (obdobne lze zadat diskretni prenos, nutno pridat periodu vzorkovani
p = tf('p')
% zadani funkce pomoci operatoru
sys1 = p*(3*p+1)/((2*p^3+4*p^2+p+1)*(10*p+1))
% prevod prenosove funkce (TransferFunction) na (to = 2)
% stavovy prostor (StateSpace)
[a,b,c,d]=tf2ss(cit,jmen)
% a nazpet
[ci,jm] = ss2tf(a,b,c,d)
% tisk polynomu jako prenos
printsys(ci,jm,'p');
% a v maticovem zapisu
printsys(a,b,c,d);
pause
% popripade s popisem
printsys(a,b,c,d,['vstup1'],['vystup1'],['stav1 stav2'])
pause
% prevod na zesileni, poly a nuly
[z,p,k] = tf2zp(ci,jm)
% prevod na parcialni zlomky
[pr pp pk] = residue(cit,jmen)
% koreny jmenovatele
roots(jmen)
pause
% nastaveni obrazku pro vykresleni
figure(1)
% prechodova funkce
step(sys)
% nemazat jiz nakreslene
hold on
% vytiskneme polovicni amplitudu
step(sys/2)
% vykreslit impulsovou odezvu
figure(100) % nove okno,protoze nelze spolecne vykreslit prech. a imp. charku bez rucniho pouziti 'plot'
impulse(a,b,c,d)
figure(2)
% pro porovnani totez z matic
% vetsina nasledujicich povelu ma dve formy - pro matice a polynomy
step(a,b,c,d)
% pri kresleni prubehu se okno nejprve smaze, chceme-li vice prubehu
% musime rict, ze se prekresluje
hold on
% druhy prubeh do stejneho okna
step(ci/2,jm)
figure(200)
%generovani vektoru casu, pocatek:krok:konec
t = 0:0.1:10
[y2,t2]=impulse(sys,t)
hold on
% zvetsovani a zmensovani grafu pomoci ikony +- okna grafu
% pouzijeme-li levou stranu, graf se nevykresli, ale zapise do promennych
[y1,t1]=impulse(sys/2,t);
% k vykresleni lze zvolit plot s moznosti nastaveni barvy a typu cary
plot(t2,y2,'g--')
plot(t1,y1/2,'b<')
pause
% nacteni dat ze snimku pomoci cliku mysi
cm = ginput(3)
pause
figure(201)
% chceme-li vice grafu v jednom okne ale bez spolecnych os
% deleni v y,x,index aktivniho okna
subplot(1,2,1)
step(cit,jmen)
subplot(1,2,2)
impulse(cit,jmen)
% nacteni dat s
figure(3)
% frekvencni charakteristika v logaritmickych souradnicich
bode(sys)
% potrebujeme-li zjisti jaka je faze pri dane amplitude, a danem omega (w)
% muzeme i vnutit frekvenci (omemga), v danych dekadach a s danym mnozstvim bodu
[amplituda faz w]=bode(sys,logspace(-2,2,200))
pause
figure(4)
% frekvencni charakteristika v komplexni rovine
nyquist(sys)
% je mozne zvetsit nekterou oblast kam kliknem mysi nebo vyznacime-li ji obdelnikem
% pravym tlacitkem mysi zmensit
zoom
pause
% vypnout zoom
zoom
% je mozne nacteni hodnot z grafu tim, ze kliknu na pozadovane body
ginput(6)
pause
figure(5)
pzmap(sys)
pause
figure(6)
% vykresleni korenoveho hodografu
rlocus(sys)
% vykresleni mrize grafu
grid on
% ziskani hodnot z korenoveho hodografu
[k,poles] = rlocfind(sys)
pause
figure(7)
% zjisteni zasoby stability ve fazi a v amplitude
% pozor! pro system, ze ktereho vznikne nestabilni smycka
% margin vrati nekonecna. Proto je potreba system potrebne
% upravit
margin(sys/10)
[zes,faze,zesf,fazef]=margin(sys)
pause
% seznam pouzitych promennych
who
pause
% seznam pouzitych promennych s jejich rozmery
whos
pause
% rozmery matic
disp('rozmery matice a')
[yy,xx]=size(a)
% nastaveni presnosti
format long
% vynasobeni dvou polynomu
pol1 = [1 2]
pol2 = [4 3]
polynom = conv(pol1,pol2)
pause
% skladani systemu - antiparalelni zapojeni dvou systemu
c1 = [1 1];
j1 = [2 2 2];
c2 = [3 3 3 3];
j2 = [4 4 4 4 4];
fs = feedback(tf(c1,c2),tf(j1,j2),'-')
% seriove spojeni
ss = series(tf(c1,c2),tf(j1,j2))
% nebo spojeni objektove
sso = sys * sys
% pri spojovaní muze dojit k tomu, ze se nektere nuly a poly nevykrati (ac by mely)
% (je to dusledek toho, ze poly se hledaji pouze s urcitou, nenulovou, presnosti)
% pro odstraneni techto “duplicit” je mozne pouzit prikaz minreal (nebo jeho obdobu)
help minreal
ssmin = minreal(tf([1.0001 1],[1 1 0]),0.001)
% pro dopravni zpozdeni se vyuziva padeho rozvoj
[dzc dzj] = pade(4,5);
dz = tf(dzc,dzj);
% pro dopravni zpozdeni je tez mozne pouzit vlastnost tf 'InputDelay' nebo 'OutputDelay' ,
% které ovšem nejsou univerzalne pouzitelne se vsemi prikazy matlabu (nektere prikazy s nimi nepocitaji)
figure(77);
step(dz,0:0.1:8);
figure(78)
bode(dz)
% ziskavani asymptoticke nahrady a jeji vykresleni
[az,wz,m,p,w]=asy5([10 1],conv([1 2 1],[1 3 4 2 1]));
semilogx(wz,az);