MATLAB

MATLAB er et verktøy for å håndtere utregninger for matematiske og vitenskapelige formål. Selve navnet kommer fra Matrix Laboratory, og dette er fordi systemet opprinnelig var spesielt designet med tanke på matriseoperasjoner. Denne veiledningen er mest nyttig som en innføring for deg som aldri har brukt MATLAB før. For deg som er en vant MATLAB-bruker og lurer på mer avanserte eller spesielle ting, er det å anbefale å sjekke ut linkene i høyremargen, eller å bruke en MATLAB-bok. Termstuene har bøker til utlån.

Innhold

Starte MATLAB

Under Linux starter du MATLAB ved å skrive kommandoen

matlab &

på kommandolinjen i et Xtermvindu. Under Windows velger du Start > All Programs > Matlab

Du vil i begge tilfeller få fram et vindu som ser omtrent slik ut:

Du har her hele fem vinduer i ett. I det øverst til venstre, har du oversikt over hjemmeområdet ditt og filene dine. Vinduet nederst til venstre viser informasjon om den fila du har valgt akkurat nå. Vinduet øverst til høyre viser forskjellige variable og slikt som til enhver tid finnes, og vinduet nederst til høyre viser en oversikt over alle de sist brukte kommandoene. Det store vinduet midt i er vel kanskje det viktigste, ettersom det er her du faktisk skriver inn kommandoer. De fleste av disse vinduene kan du dra rundt om kring slik det passer deg, så om du ikke syntes at du trenger dem, eller kanskje vil ha alle vinduene til høyre, så lar dette seg enkelt gjøre.

Dersom du trenger hjelp, så har Matlab en ganske bra brukerveiledning, som du kan finne ved å trykke på

Help > Product help

eller trykke F1.

Enkel bruk

Det aller enkleste du kan bruke MATLAB til, er vanlige "kalkulatoroperasjoner". Disse skriver du inn som kommandoer på kommandolinjen, som er feltet etter >> ('promptet'). I eksempelet i figuren under gjør vi noen slike enkle operasjoner:

Viktig å merke seg

  • Vinduet nederst til venstre. Her får du opp en command history. Hvis du dobbeltklikker på en av de tidligere brukte kommandoene her, vil den bli utført om igjen.
  • I MATLAB brukes radianer for alle operasjoner med vinkler.
  • For å skrive kommentarer, kan du bruke %. Det du skriver etter et %-tegn, vil ikke bli tolket av MATLAB-prosessoren.
  • MATLAB bruker punktum som desimalskille.
  • Hvis du vil rydde opp i kommandovinduet (starte med blankt ark), kan du velge
    • Edit > Clear Command Window

De vanligste bruksområdene

Vanligvis bruker man Matlab til litt mer avanserte ting enn vist i forrige avsnitt.

Tilegne variabelnavn til verdier

Når man bruker MATLAB til litt mer enn bare enkle regneoperasjoner, får man ofte bruk for å bruke variabelnavn istedet for de faktiske verdiene.

Variabelnavnet kan inneholde både tall og bokstaver. Men:

  • Du kan ikke bruke norske vokaler (æøå), hold deg til a-z
  • Variabelnavnet må starte med en bokstav
  • Ikke bruk spesialtegn som minustegn, dollartegn etc, da disse har egne betydninger i MATLAB

Under viser vi et enkelt eksempel der variablene a og b tilegnes verdier, for til slutt å legges sammen.

Vektorer

Du kan bruke to typer vektorer, rekke-vektor og kolonne-vektor. Forskjellen i syntaks er vist i eksempelet under:

Altså mellomrom mellom verdiene for å få en rekkevektor, semikolon for å få kolonnevektor. Transponeringsoperatoren er 'enkel-fnutt', det tegnet du får ved å trykke en gang på tasten til høyre for æ-tasten på et norsk tastatur. OBS! Hvis vektoren inneholder komplekse tall er ' tilsvarende kompleks konjugering etterfulgt av transponering, mens .' er vanlig transponert.

Hvis du skal skrive opp litt store vektorer, der det er en fast inkrementering mellom hver verdi, har MATLAB et hendig verktøy for dette. La oss si at du skal ha en matrise som går fra 0 til 10, men bare annethvert tall skal være med (inkrement=2). Syntaksen er da

[startverdi:inkrement:sluttverdi]

Eksempel:

Matriser

Matriser er ikke noe annet enn todimensjonale vektorer. Ved å kombinere syntaksen for rekkevektorer og kolonnevektorer, får du matriser. Også for matriser kan du bruke inkrementeringsmetoden som vist for vektorer. Se eksempel under:

Når du opererer med matriser kan du bruke vanlige operatortegn for multiplikasjon og addisjon ([=*, +=]). For invertering av matriser bruker man kommandoen inv , og for å gange en matrise med sin inverse matrise bruker man [=/=]. Se eksempel under.

NB: Hvis vi istedet hadde ønsket å skrive inv(a)*a, ville det blitt [=a\a=].

Ligningssystemer

For å løse likningsystemer må vi bruke noe av det vi har lært om matriser først, pluss huske litt matematikk.

Først, la oss se på følgende likningssett:

ax + by = p
cx + dy = q

Når man bruker matriser for å uttrykke likningssett, vil det kunne se slik ut:

AX=B

der både A, X og B er matriser.

A = a b
    c d
X = x
    y
B = p
    q

Hvis A er inverterbar, vil X være lik @@inv(A)*B@@. Som vi lærte i avsnittet om Matriser kan vi skrive dette som [=A\B=]

La oss regne et eksempel i Matlab:

Grafiske fremstillinger

MATLAB er veldig flink til å lage fine grafiske framstillinger av matematiske forhold.

Todimensjonale grafer (én variabel):

For å få opp en todimensjoal graf, brukes kommandoen plot som følger:

plot(x,y)

Her tilsvarer y funksjonen din,og x tilsvarer x-aksen. For å angi denne, må x oppgis på en spesiell form, omtrent som en vektor, men uten firkantparantesene:

x=startverdi:inkrementverdi:sluttverdi

Med inkrementverdi menes oppløsningen på x-aksen (hvor store trinn bortover du skal ha)

Du må også angi hva funksjonen y skal være. Et eksempel under, med x som spenner fra null til ti, med trinn på 0.2, og funksjonen y=cos x.

x=0:0.2:10   
y=cos(x)
plot(x,y)

Voilà:

Tredimensjonale grafer (to variabler):

For å få en litt kul graf, velger vi et litt stygt regnestykke

z(x,y) = x*exp(-x^2-y^2)

For å definere hvilke x- og y-verdier vi vil at grafen skal spenne seg over bruker vi samme syntaks som da vi definerte x-aksen for todimensjonale plot, og i tillegg kommandoen meshgrid:

[x,y] = meshgrid(-3:.2:3,-3:.2:3)
z= x.*exp(-x.^2-y.^2)
mesh(z)

Husk å få med punktumene etter hver x og y når du definerer z.

Bruk i enkel programmering (.m-filer)

Det er ikke alltid at oppgaven vi ønsker å løse er så enkel. For eksempel hender det at man har et matematisk problem som man må løse numerisk (dvs at man trenger mange gjennomkjøringer av regnestykket for å finne en god nok tilnærming til svaret). Da er det best å kode dette som et program. Dette gjør man ved å skrive kommandoene inn i en såkalt .m-fil. Denne .m-filen kan man etterpå kjøre som en kommando i MATLAB.

Velg

File > New > M-file

Da dukker det opp et eget vindu, som ser mest ut som et blankt 'ark'. Her skal du skrive kommandoene dine, og tilsammen blir kommandoene et program. Lagre gjerne filen med et godt filnavn slik at du husker hva slags program det er. Samme navngivingsregler gjelder her som for variabelnavn.

For å kjøre denne .m-filen må man gå tilbake til kommandovinduet og taste inn filnavnet på .m-filen du har laget. Da kjører MATLAB selv innholdet av .m-filen og gir deg figurer, utregninger, eller hva du sagt den skal gjøre. Husk å starte MATLAB fra samme sted på hjemmeområdet som der du har lagret .m-filen. Hvis ikke finner ikke matlab .m-filen du prøver å starte og det kommer en feilmelding.

Her er et eksempel på et enkelt program som minner litt om 3D-plottet vist tidligere:

Fila ble lagret som 'testfil.m', og når du så skriver kommandoen 'testfil' i kommandovinduet, får du fram denne figuren:

M-filer kan være uendelig mye mer avansert enn dette, men mer dyptpløyende har vi ikke anledning til å være her. På termstuene har vi MATLAB-bøker til utlån. Det finnes også store ressurser på nett, se linkene i høyremargen for et lite utvalg.

Kjente problemer med MATLAB

Av og til møter Matlab-brukere noen problemer som ikke har med selve programmeringen å gjøre. Her samler vi noen av de som folk møter oftest.

MATLAB klager over at noen filer mangler

Det hender at MATLAB klager over at filer som tidligere var accessible ikke er det lenger, med henvisning til en path dypt inne i /local/opts/matlab..

Problemet ligger i at MATLAB lagrer en del pather til ting som brukes ofte, og når ting ikke befinner seg der MATLAB har notert seg at det var, så kommer denne meldingen (man skulle tro programmet da var glupt nok til å lete på nytt, men dengang ei).

En løsning på dette, er å avslutte MATLAB, for så å flytte eller slette følgende fil:

.matlab/R14/toolbox_cache-7.0.1-glnx86.xml 

for så å starte MATLAB på nytt.

Utskrift fra MATLAB

Utskrift fra MATLAB kan være litt kinkig av og til. Det vil ikke alltid fungere å bare velge Fil > Print, slik man er vant med.

  • M-filer er ikke noe annet enn ren tekst. De kan du printe direkte ut fra kommandolinjen, valgfritt om du vil bruke ppr eller print. (se nedenfor om du er usikker på hva dette betyr)
  • Bildefiler lagres automatisk i .fig-format. Disse kan alltid skrives ut på følgende måte: Velg File > Save As, og velg *.EPS i stedet for *.FIG. Velg et filnavn. Når du gjør dette, vil filen bli lagret som en .eps-fil, og denne kan skrives ut fra kommandolinjen via kommandoen print.

Med 'utskrift fra kommandolinjen' menes utskrift fra Xtermvindu. (der du startet MATLAB fra i utgangspunktet) Skriv kommandoen

print -Pprinternavn filnavn

Problemer med tegnet: ^ i MATLAB

Det hender at dette tegnet ikke dukker opp når det skal i MATLAB. Dette kan fikses i xterm med kommandoen:

setxkbmap no nodeadkeys

Matlab logger ut linux ved plotting

Ved enkelte plott vil Matlab logge ut Linux-sesjonen på grunn av litt rare grafikkdrivere, man kan da prøve å legge inn følgende kall før plottet, som kanskje unngår problemet:

set(gcf,'Renderer','Zbuffer')
Publisert 29. juli 2013 13:39 - Sist endret 25. feb. 2022 20:28