• No results found

Det finns ett mycket stort antal standardfunktioner inbyggda i MATLAB, man kan utgå ifrån att den funktion man vill använda också finns inbyggd och bara mycket sällan bli besviken. De vanligast förekommande är grupperade i tre sektioner, elementära funktioner, specialfunktioner och elementära matrisfunktioner. Det enklaste sättet att få reda på vilka funktioner som finns är att i

kommandofönstret skriva help elfun, help specfun och help elmat. När man väl hittat den funktion man söker kan man få mer detaljerade information om den genom att skriva help funktionsnamn. Observera att MATLAB skriver funktionsnamn med versaler i hjälp-dokumentationen, men att du skall använda gemener (små bokstäver) när du ger kommandot i MATLAB.

4.7.1 Operationer på vektorer

MATLAB har ett antal inbyggda funktioner som opererar på vektorer. Vi har redan sett ett exempel på en sådan, nämligen transponering ', som applicerad på en vektor gör om en radvektor till en

kolumnvektor och vice versa.

Andra funkioner är:

zeros, ones, rand, randn

Dessa operatorer kan användas för att skapa vektorer och matriser utan att man behöver tilldela elementen sina värden ett och ett.

zeros(n,m) skapar en n x m matris där alla element är satta till noll. Som ett specialfall kan n eller m vara 1, i vilket fall en radvektor repektive kolumnvektor skapas.

ones (n,m) skapar en n x m matris där alla element är satta till 1.

rand (n,m) och randn (n,m) skapar matriser där elementen är slumpvis fördelade, rand producerar tal som är jämnt fördelade mellan 0 och 1, randn producerar slumptal som är normalfördelade kring 0 med standardavvikelse lika med 1.

linspace

Kommandot linspace(x1, x2, N) skapar en vektor som har N element, x1 som första element och x2 som sista element. Avståndet mellan elementen beräknas automatiskt så att de blir lika stora.

Till exempel ger y = linspace(0,1,5) resultatet [0 0.2500 0.5000 0.7500 1.0000]

medan y=linspace(0,1,4) ger [0 0.3333 0.666 1.0000]

length(vektor)

Kommandot length(vektor) returnerar längden av vektorn x, man kan spara resultatet i en variabel genom att ge kommandot langd = length(vektor).

sum (vektor)

beräknar summan av alla element i vektorn.

"kolon" - operatorn

"kolon" operatorn är en mycket användbar operator i MATLAB, både när vi arbetar med vektorer och matriser. Den förekommer i fler olika versioner, vilket i början kan göra det litet förvirrande. Den enklaste formen är a : b viket helt enkelt motsvarar serien av tal från a till b med steget 1 mellan varje tal. Vi kan definiera steget till att vara något annat tal än 1, kolon operatorn ser då ut så här:

a : c : b, vilket ger oss en serie tal mallan a och b, med steget c. Några exempel:

kolonoperatorn är uppenbarligen ett utmärkt verktyg för att skapa vektorer med regelbundna intervall mellan elementet. Vi kommer snart att se att när vi skall producera grafer så är det just precis sådana vektorer som vi kommer att skapa om och om igen.

Något annat som blir väldigt behändigt med hjälp av kolonoperatorn är att adressera en serie element i en vektor:

De flesta av vektorfunktionerna opererar också på matriser, men ibland med litet oväntade resultat.

Dessutom finns ett antal funktioner som är specifika för matriser. Några av de viktigaste är:

sum(matris)

Det är lång ifrån uppenbart vad vi kan förvänta oss här. Funktionen ger inte summan av alla element i matrisen, låt oss prova oss fram:

>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9];

>> sum (A) ans =

12 15 18

sum (A) ger oss alltstå tydligen en radvektor vars element är summan av kolumnerna i matrisen A.

Detta beteende är något som kommer att återkomma, MATLAB arbetar ofta med kolumnerna i en matris. Hur skall vi göra för att beräkna summan av raderna? Det enklaste är att anpassa sig till MATLABs preferenser, om MATLABs funktioner arbetar med kolumner och vi är intresserade av rader, låt oss transponera matrisen och sedan applicera funktionen på den transponerade matrisen. I det här fallet ger oss sum(A') en radvektor vars element är summan av kolumnerna av den transponerade matrisern, vilket ju är samma sak som summan av raderna i den ursrpungliga matrisen. Vill vi sedan få det att se litet snyggt ut så transponerar vi resultatet, som ju är en radvektor, till en kolumnvektor.

Hängde ni med? Det är nog enklare att bara göra det hela än att försöka läsa den här beskrivningen, alltså:

>> A'

ans = 1 4 7 2 5 8 3 6 9

>> sum(A') ans =

6 15 24

>> sum(A')' ans = 6 15 24

Kommandot sum(A')' ger oss en kolumnvektor där varje element är summan av raden i den ursprungliga matrisen. Gå igenom exemplet ovan och se till att du förstår alla led i operationerna!

eye(N)

Eye(N) producerar en N x N enhetsmatris.

diag(A)

Om A är en matris resulterar diag(A) i en kolumnvektor där elementet i raden n motsvarar elementet i diagonalen av matrisen på rad n och i kolumn n.

Om A är en vektor, resulterar M=diag(A) i en matris där diagonalelementen är de samma som elementen i vektorn, alltså M(i,i) = A(i). Detta kommando är väldigt användbart när vi senare vill skapa kovariansmatriser.

kolon operatorn

Precis som för vektorer är kolonoperatorn ett bekvämt sätt att adressera delar av en matris:

A(1:4,3) adresserar elementen som finns i rad 1 till och med fyra i den tredje kolumnen i matrisen A. Ett specialfall är när vi skriver : utan några omgivande siffror, operatorn resulterar då i alla element i en kolumn eller rad: A(:,3) ger alla element i tredje kolumnen av A.

4.8 Övningsuppgifter

Uppgift 1

Givet vektorn x = [1 2.75 3.9 4.6], skapa (använd elementvis operation) y, där varje element yi = 2xi

och skapa en matris med hjälp av dessa, vars första

rad är (2 3 1).

Använd sedan vektorerna för att skapa matrisen

3 2 4

Skapa sedan vektorn x där elementen är samma vinklar uttryckta i radianer.

Skapa därefter vektorn s där elementen är sinus för de givna vinklarna.

Skapa slutligen vektorn c, där elementen är cosinus för de givna vinklarna. Använd inte funktionen cos, utan beräkna värdet genom formeln cosα = 1−sin2α

Använd dessa vektorer för att skapa matrisen A med fyra rader och tre kolumner, varje rad skall bestå av vinkeln, sinus för vinkeln och cosinus för vinkeln.

Uppgift 5

Skapa genom att använda vektoroperatorer vektorerna a = (4.0 2.4 0.8 -0.8 -2.4)

b= (1,5 3.0 4.5) Uppgift 6

Skapa genom att enbart använda vektor- och matrisoperationer matrisen A (det går att göra på en rad)

A=

Uppgift 7

Skapa en vektor med x-värden: x= (1, 3, 5, 7)

Skapa sedan, genom beräkningar på x-vektorn, en vektor y där varje element uppfyller y = 3*2 + 4x för motsvarande element i x-vektorn. Skapa därefter vektorn yPrim, där varje element är lika med derivatan av ekvationen ovan, beräknad för x-värden ur vektorn x.

Uppgift 8

Fem bollar med olika massor m rullar på rad med varsin konstant hastighet v. Bollarnas massor och hastigheter ges av följande tabell:

m (kg) 2.0 1.5 3.0 2.0 2.5 v (m/s) 2.0 4.0 -3.0 1.0 6.0

Gör en vektor för samtliga massor och en vektor för samtliga hastigheter och beräkna därefter varje bolls rörelseenergi med ett enda kommando. Räkna ut totala rörelseenergin med ytterligare ett kommando.

Uppgift 9

Skapa en vektor med tio element som består av likformigt fördelade slumptal som antar heltalsvärden från 1 till 6.

Related documents