Home page

BRR home page

výuka home page


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);


laboratore