MATLAB

Fra TermvaktWiki
Gå til: navigasjon, søk


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. Men likevel kan du, om du vil, bruke Matlab til enkle ting som du ellers ville brukt en kalkulator til.

Denne veiledningen er nok 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 nedenfor, 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:

Matlab intro.png

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:

Matlab enkelbruk.png

Legg merke til

  • 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 tilslutt å legges sammen.

Matlab variable.png


Vektorer

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

Matlab vektorer.png

  • 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 ' 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]

Se eksempel:

Matlab inkrement.png


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.

Matlab matriser.png

  • 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.

Matlab matriseoperatorer.png

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


Likningsystemer

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 se regne et eksempel i Matlab:

Matlab likningssystemer.png


Grafiske framstillinger

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 step 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 step på 0.2, og funksjonen y=cosx.

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

Voila:

Matlab graf.png


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.

Matlab mesh.png


Bruk av 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 sånn 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 eksempel på et enkelt program som minner litt om 3D-plottet vist tidligere:

Matlab mfil.png

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

Matlab plot2.png

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 nederst på denne siden for et lite utvalg.

Installasjon av MATLAB

Du kan installere MATLAB bare så lenge du er student eller ansatt ved UiO.

Ubuntu 64-bit

For å laste ned MATLAB kjør kommandoen under. Ca. ti gigabyte lastes ned, så dette tar litt tid. Husk at du må være koblet til uio nettet.

sudo rsync -a --progress app-sync.uio.no::rhel6-x86_64-matlab  /opt/matlab

Installer med denne kommandoen:

sudo apt-get install matlab-support

Denne installasjonen virker på 64-bits ubuntu.

Hvis du har problemer med at MATLAB henger seg under startopp, sjekk at filene under ~/.matlab er eid av deg. Hvis filene eies av root starter ikke MATLAB, for å fikse dette kjør kommandoen:

sudo chown brukernavn:brukernavn -R ~/.matlab

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 sånn som 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 stenden 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')


Relevante linker

Nyhetsgrupper om MATLAB

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy