Matlab

En introduktion til grundlæggende  reguleringstekniske anvendelser.

  



Matlab har en overvældende mængde manualer og tutorials tilgængelige on-line: http://www.mathworks.com/academia/ , men jeg har alligevel valgt at indlægge en lille introduktion på dansk her, så start med den

 

Brugerinterfacet i Matlab

Matlab vil første gang du åbner det indeholde 4 vinduer:

1.      Workspace,  der viser de variable du i øjeblikket har inde i Matlab og kan arbejde med.

2.      Current Folder, der virker som explorer og hvor du kan finde evt. gemte Matlab-filer, der altid har extension .m

3.      Command History, hvor Matlab-ordrer du tidligere har brugt kan findes og genbruges.

4.      Command Window, der er stedet hvor Matlab-kommandoerne skrives og eksekveres. Karakteristisk for dette vindue er MatLabs kommandoprompt ' >> '

 

 

Er du træt af nogle af vinduerne, kan de bare lukkes, og hentes fra Layout iconet i værktøjslinjen

Der er masser af Help-funktioner, men prøv i denne omgang at skrive: help help i komandovinduet. generelt fås den mest relevante hjælp via help-komandoen, men Help fra værktøjslinjen giver den fulde dokumentation.


Grafikvindue.  Output fra alle grafikkommandoer du skriver i kommandovinduet generer et nyt vindue kaldet et figurvindue, som er et separat vindue. Brugeren kan generere lige så mange figurvinduer som system hukommelsen tillader. Højre-klik et tilfældigt sted på figuren, og få redigeringsmuligheder. Værktøjslinjen kan se lidt forskellig ud alt efter hvilken version du har.
 

  

 


 


 

Øvelsen

 

Vores lærebog baserer sig på Matlab ver.7 og i alle kapitler findes opgaver til løsning i Matlab. Afhængig af hvilken udgave du har af Matlab, kan der være små afvigelser.
 

Appendix B i lærebogen  indeholder en masse eksempler på brugen, knyttet til de enkelte kapitler. 
 

Her på skolen er eksemplerne lagt på:

O:\ST_ASE-ENG-Staff2Stud\EIT-elektro og IKT\4. Semester\MATLAB-filer E4IRT
eller:
\\DFS04.UNI.AU.DK\dfs\ST_ASE-ENG-Staff2Stud\EIT-elektro og IKT\4. Semester\MATLAB-filer E4IRT

 

  Øverst i vinduet ved Current Folder skriver du stien, så kan Matlab finde eksemplerne.


Skriv nu i kommandovinduet det eksempel du vil starte med:  ch2p1 og straks  vises resultatet af at køre denne  ”script”,  og ved at sammenholde det med udskriften i bogen, kan du sammenligne årsag og virkning.

Bedre er det imidlertid, at åbne ch2p1  i Editor/Debugger : I Current Folder vinduet åbnes adressen ovenfor, hvor ch2p1 findes, og åbn den.  Tilret vinduerne, så du har kommandovinduet og editor/debugger side om side øverst på skærmen, og denne side nederst.


Der er nu flere måder at arbejde på:

 

1.      Tryk på og hele script'et udføres

2.      Marker nogle af ordrerne med musen, højre klik og vælg Evaluate Selection.

3.      Marker hele indholdet i ch2p1 (eller dele deraf) og brug copy/paste over i kommandovinduet.

 

Der er fuld frihed til at skrive ændringer  i eksemplerne og se virkningen. Hvis du vil gemme den ændrede fil, så gør det i dit eget bibliotek på H:\Matlab.

 

Er du i tvivl om en ordre, et tegn el.l. så skriv help efterfulgt af 'space' og ordren. Start evt. med help help

 

Afprøv nogle af eksemplerne ch2p1 til 8 (App. B i bogen), det vil give dig en ide om hvordan Matlab kan bruges, syntaks osv. Prøv at redigere eksemplerne og gem dem i din egen udgave.


 

Inden du går videre vil jeg lige nævne ordren save, (skriv "help save"), som kan være nyttig, hvis du vil gemme værdien af dine variable til næste gang. Gemmes i H : \ Matlab. 
Når du starter op igen skriver du så blot load   


 

Eksempel ch2p9  

Introducerer flere forskellige måder at beskrive systemer på. 'Rationel Expression Method, Polynomial Form' er nok den du umiddelbart vælger, men 'Vector Method' bør du også kende.

MATLAB er et objekt-orienteret værktøj, og  et system kan opfattes som et enkelt objekt, og beskrives ved en enkelt variabel:
 

Skrives  G=tf([1 2],[1 10])   vil variablen G  indeholde alle modelspecifikke data. Efterfølges ordrer af et semikolon, vil uskrift af resultatet undertrykkes. Se help tf

Alternativt:  s=tf('s');  G=(s+2)/(s+10) ordren s=tf('s') skrives ikke hver gang, blot een forudgående gang.


Beskrives et nyt system ved    H=tf(1,[1 1]) (alternativt  H=1/(s+2))  kan de serieforbindes med G *H ,  eller parallelforbindes med G+H. Denne skrivemåde vil ofte forenkle arbejdet.


Du er ikke bundet til en tæller/nævner repræsentation, men kan konvertere til andre repræsentationer, (se evt. ch2p10+11).


Vil du omvendt fra objektbeskrivelsen og til tæller/nævner, kan bruges f.x. ordren tfdata med følgende syntaks: [num,den]=tfdata(G,'v')

 

Skrives H=tf(1,[1 1], 0.1) får du resultatet som en z-overføringsfunktion, da det sidste tal nu opfattes som sampleintervallet.

 

I Help er der et afsnit om Linear Time Invariant (LTI) -models, dvs. om overføringsfunktioners repræsentation. "help lti"


 

I det følgende vises lidt om tegning af grafer:

 

Skriv:          t=[0:0.5:10];                             
   
                y = sin(t);z = cos(t);
                   plot(t,y,'o',t,z,'x')
 Virker copy/paste ikke, så prøv med 1 linje ad gangen!

Efter ordren plot vil kurverne vise sig i et separat fig.-vindue (fordi der ikke er noget ; efter).

Bemærk at ' : '  operatoren genererer en t-vektor med værdierne fra 0 til 10 i spring på 0.5. Er du i tvivl, så få t vist ved blot at skrive t.

 

Brug "Arrow-up" tasten til at genfremkalde plotlinien igen.

Ret linien til: plot(t, y, 'r')

Skriv videre:  hold on   der sikrer at næste kurve ikke overskriver tidligere

plot(t, z, '- g')

hold off

 

Og så er der brugen af mulighederne i selve grafikvinduet. 

 

 

Lav et nyt figure-vindue, (se Pull Down menuen), ellers erstatter nye plot det tidligere. Eller skriv figure(4), så åbnes et nyt figurvindue med nummeret 4.

subplot(2, 1, 1), plot(t, y, 'r')

subplot(2, 1, 2), plot(t, z, '-.g')

 

for sjov: afbild sinc-funktionen som en flade (ny figur), skriv:

x = -8 : 0.5 : 8 ; y = x;

[xx yy] = meshgrid(x, y);

r = sqrt(xx.^2 + yy.^2) + eps;

z = sin(r) ./ r;

surfc(xx, yy, z)

Tryk f.x. på rotationstegnet


Gennemgå   Eksempel ch4p2


 

M-files:

 

Ofte har du brug for at udføre de samme ordrer mange gange, og det kan da være bekvemt at samle disse ordrer i en script m-file eller en function m-file sådan som bogens forfatter har gjort.  Se nærmere i online manualerne hvis du vil have detaljerne med.


Vi vil her skrive en function M-file.
 

Vi definerer to overføringsfinktioner G og H:
 

G=tf(1,[1 2])
H=tf(1,[1 5])
 

Og vil nu have dannet lukketsløjfe-overføringsfunktionen M = G / (1+G·H) idet H er tilbagekoblingen, og G sidder i fremadføringen.
Det kan gøres med ordren:

M=feedback(G,H)

Men vi vil lave vores egen funktion med navnet lukkets, der skal gøre det samme.

Gå op under New og vælg Function, og MATLAB Editor/Debugger åbner. Skriv nu de nødvendige ordrer ind som vist:

 

 

Efter af have gemt m-filen i H:\Matlab,  kan du gå tilbage og skrive:

 

help lukkets        (Automatisk får du indbygget help til funktionen.)

T=lukkets(G,H)

 
Bemærk at vi nu får den med poler og nulpunkter, og at Matlab ikke har fået forkortet udtrykket. Derfor er feedback ordren stadig den bedste.


Reduktion at T kan gøres ved at skrive:   M=minreal(T)


Har du lyst til at se hvordan Matlab har lavet feedback-ordren, kan du skrive:  type feedback . Der er brugt væsentlig flere ordrer, men help-funktionen er skrevet på samme måde.
 

Prøv at omsætte T til et nævner og tæller polynomium.

 

Du får mest brug for at kunne indlæse overføringsfunktioner og skifte mellem polynomie- og pol/0-pkts- form. skriv help tf og help zpk

Samt tegne bodeplot (f.eks.: bode(G) og stepresponse (f.eks.: step(G)) osv., men nu er den indledende øvelse slut, og resten må du selv finde ud af.

 


 

Brug bogens eksempler til de enkelte afsnit for at komme videre på egen hånd. Der er til de enkelte kapitler nogle eksempler der viser brugen af relvante Matlab ordrer.

 

I E4IRT vil jeg anbefale du holder dig til de få basic ordrer ovenfor, for ikke at tabe fokus på det der er væsentligt i reguleringsteknikken.

Eksemplerne findes også på lærebogens hjemmeside.