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

 

Introduktion:  Hvad er MatLab?

MatLab står for MATrix LABoratory. Det er en softwarepakke specielt udviklet til numeriske beregninger og visualisering af data. Som navnet indikerer er MatLab udviklet til matrix regning, hvilket programmets struktur stadig bærer et vist præg af. MatLab er i dag et meget udbredt værktøj og anvendes særligt indenfor signalbehandling og reguleringsteknik
MatLab har hundredvis af indbyggede funktioner til numeriske beregninger, grafik og animation, samtidig med at der er indbygget et højniveau programmeringssprog således, at det er enkelt at udvikle egne funktioner og rutiner. Herudover fås der en meget stor mængde af Toolboxe til Matlab, såvel kommercielle, som freeware tilgængelig på internettet (se Links siden).

Opbygningen af Matlab og dets faciliteter fremgår af figuren herunder:

 

 

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 på figuren, og fa redigeringsmuligheder. Se MATLAB / Getting Started / Graphics
 

  

 

Input-Output

Datatyper 
Den grundlæggende datatype i Matlab er et array. Et array omfatter flere forskellige dataobjekter: integer, reelle tal, komplekse tal, matricer, karakterstrenge, strukturer og celler. I de fleste tilfælde behøver man ikke tænke meget over hvilken datastruktur man benytter, det finder Matlab ud af. For eksempel skal man ikke definere om en variabel er reel eller kompleks.

Dimensionering 
Dette foregår også automatisk i Matlab, så man skal altså ikke definere størrelser på eksempelvis matricer og vektorer. Man finder dimensionerne af en eksisterende vektor eller matrix med kommandoerne size og length.

Case sensitivitet 
Matlab er case sensitiv. Altså er a og A to forskellige variable. Det fleste kommandoer og indbyggede funktioner kaldes med små bogstaver.

Kommando historie 
Matlab gemmer tidligere skrevne kommandoer i en buffer. Disse kommandoer kan genkaldes med 'pil op' tasten. Dette gør det nemmere at ændre tidligere kommandoer. Man kan også skrive de første karakterer i en kommando og derefter taste 'pil op'. Endelig er der Command History vinduet.

Filtyper

MatLab har 3 typer af filer hvor informationer gemmes:

M-filer 
M.-filer, er standard ASCII tekst filer, med ekstension .m til filnavnet. M-filer findes i to udgaver, nemlig script filer og funktions filer. Script filer er en samling af Matlab kommandoer samlet i en fil, der så kan eksekveres på en gang ved at kalde filnavnet. Funktions filer indeholder en funktion der kan have et antal in- og output parametre. Mere herom senere.

Mat-filer 
Mat-filer er binære datafiler, med ekstension .mat til filnavnet. Mat-filer skabes af Matlab når man benytter save kommandoen til at gemme data. Dette filformat kan kun læses af Matlab. Data kan hentes ind i Matlab igen med kommandoen load.

MEX-filer 
MEX-filer er Fortran eller C programmer der kan kaldes fra MatLab, de har ekstension .mex. Brugen af MEX-filer kræver nogen rutine i brugen af MatLab og vil ikke blive yderligere berørt i dette materiale.

 


 

Ø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 REG1.   Ø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 O:\ST_ASE-ENG-Staff2Stud\EIT-elektro og IKT\4. Semester\MATLAB-filer REG1, 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 en 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 LTI-models, dvs. om overføringsfunktioners repræsentation. Control System Toolbox / Getting Started / Building Models / Linear Models 


 

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

 

Skriv:          t=[0:0.5:10];                               Bruger du copy/paste, så tag 1 linje ad gangen!
   
                y = sin(t);z = cos(t);
                   plot(t,y,'o',t,z,'x')

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.

 

 

Eksemplerne findes også på lærebogens hjemmeside.