MATLAB
• MATrix LABoratory
MATLAB
• Räknedosa för matriser

miljö och “programmeringsspråk”
• Visualisering av data
Introduktion

avancerad grafik
Hösten 2010
Tillämpning Matlab
2
Interpreterande skriptspråk
• Ingen kompilator
• En sats evalueras
(interpreteras/tolkas)
sats för sats när
skriptet körs
Introduktion till Matlab
• Kallas för
interpreterande språk
Hösten 2010
Tillämpning Matlab
3
Hösten 2010
Tillämpning Matlab
Språket - kommandosyntaxen
Variabler
• Stor uppsättning kommandon och funktioner
• Ingen variabeldeklaration


avancerade algoritmer
inriktat mot linjär algebra 




Finansiell matematik
Statistik
Simulering
etc.
>> A = 7.5*2
>> 7.5*2 (resultatet i variabel ans)
• Enkelt konstruera egna rutiner och
funktioner (M-filer)
Hösten 2010
Tillämpning Matlab
som i Python
variabler definieras genom tilldelning
• Tilldelningar sker med =
• Resultat utan tilldelning tilldelas variabeln
ans
• Många tillämpningar i applikationer

4
• semikolon undertrycker utskrifter
• case-sensitive
5
Hösten 2010
Tillämpning Matlab
6
Vektorer
…variabler
• Den grundläggande datatypen är flyttal


• En sekvens av data
• Kan vara ordnad i rader eller kolumner
• Skapas omslutna av [ och ]
normalt 16 decimaler
C:double, Python: float
• Elementen är i de flesta fall reella
(kan även vara komplexa)

>> v = [1, 2, 3, 4]
• Indexeras med ( och ) med start från 1
Många andra inbyggda datatyper
(olika former av heltal, tecken, etc.)
>> v(1)
1
Jämför med listor i Python
Behöver inte deklarera
storlek som i C
Hösten 2010
Tillämpning Matlab
7
Tillämpning Matlab
Hösten 2010
...vektorer
Skalärer
• En radvektor kan göras om till en
kolumnvektor
• En vektor av längd 1, kallas skalär, dvs ett
vanligt tal.
w = v'
>> v = [4]
4
>> v*[1,2,3]
4
8
• Kan även skapa en kolumnvektor direkt
w = [1; 2; 3; 4]
Hösten 2010
Tillämpning Matlab
9
start : steg
: stopp
Jämför med range i
Python:
>> range(0,10,2)
Matlab:
>> 0:2:9
start : stopp
• Skalär-vektor-operation (+, -, *, /)
>> v = [1 2 3]
>> 4 * v + 3
ans = 7
11
15
• vektor-vektor-operationer (+, -, .*, ./,.^)
 Steglängden är 1.
>> v + v
ans = 1
>> v.*v;
ans = 1
>> v.^3
ans = 1
x = -pi/2:pi/30:pi/2
 Ger en radvektor
Hösten 2010
10
Elementvisa operationer
: operatorn – Skapa vektorer
 Ger en följd av värden från
start till stopp med steglängd
steg.
12
Tillämpning Matlab
Hösten 2010
8
Tillämpning Matlab
11
Hösten 2010
4
6
4
9
8
27
OBS!
>> v * v
Betyder en matrisoperation som hör till
linjär algebra. Ger
vanligtvis ett fel elller
ovänatade resultat
Tillämpning Matlab
12
Strängar
Elementvisa operationer
x = linspace(0,1);
%
OBS! Radvektor
y = x.^n.*exp(x);
%
OBS! Radvektor
• Textsträngar representeras
av vektorer av tecken
Samma som i C
• Strängar skapas
Samma som i Python
med enkla citationstecken
>> s = 'Text'
>> s(1)
ans = T
Hösten 2010
Tillämpning Matlab
13
The matrix
Hösten 2010
Tillämpning Matlab
Enstaka element i matrisen
• En matris är en samling rad- eller
kolumnvektorer
• Alla vektorer måste vara lika långa
• Bildar en grid av värden
variabel(radindex, kolumnindex)
A(2,3)
Observera!
skillnad mellan
tilldelning och
adressering
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
A =
1
2
3
4
5
6
7
8
9
Hösten 2010
14
Tillämpning Matlab
15
n × n-matris med ettor
ones(m,n)
m × n-matris med ettor
zeros(n)
n × n-matris med nollor
Tillämpning Matlab
16
Indexering
Att skapa matriser
ones(n)
Hösten 2010
• Vi kan indexera i en vektor med en skallär
>> v = [4, 5, 6];
>> v(3)
• En skallär var också en vektor, alltså
zeros(m,n) m × n-matris med nollor
rand(n)
n × n-matris med slumptal
rand(m,n)
m × n-matris med slumptal
>> v([2, 3])
ans = 5
6
• eller ännu smidigare med kolonoperatorn
>> v = [1, 2, 3];
>> v(2:3)
ans = 5
6
Hösten 2010
Tillämpning Matlab
17
Hösten 2010
Tillämpning Matlab
18
alla
Del av matrisen
• Att lära sig jobba med jämföresleoperatorer
och kolonoperatorn ger ett väldigt kraftfullt
verktyg när vi jobbar med datamängder
i:te raden
A(i,:)
j:te kolumnen
A(:,j)
>> v = [3 2
>> v > 3
0
0
>> find(v >
3
5
>> v(v > 3)
3
2
>> v(find(v
3
2
delmatris
A(i:j,k:l)
Hösten 2010
Tillämpning Matlab
19
Konkatenera och ersätta
1
0
= 0
0
1
0
== 0)) = 9
9
1
9
Hösten 2010
2
2
Tillämpning Matlab
20
exempel1.m
• Anropar skriptet med filens namn utan ändelse
>> exempel1
25
• Kan byta katalog med cd
• Kommentarer inleds med % och räcker resten av
raden
21
Hösten 2010
Tillämpning Matlab
22
Söka hjälp
who/whos
>> what
M-files in the current directory
C:\Dokument\PTX\ht10
exempel1
>> pwd
ans =
C:\Dokument\PTX\ht10
>> cd ..
>> pwd
ans =
C:\Dokument\PTX
Tillämpning Matlab
0
v = 1:2:10;
disp(sum(v));
what/pwd/cd
Hösten 2010
1
3)
• Vi kan utföra kommandon interaktivt eller samla
dem i skrip-filer (.m-filer)
• Textfiler, vanligtvis med en sats per rad
>> A = [1 2 3; 4 5 6]
A = 1
2
3
4
5
6
>> v = [A(1,:) A(2, :)]
v = 1
2
3
4
5
6
>> B = [A(1,1:2); A(2, 2:3)]
B = 1
2
5
6
>> v(3:4) = [8 8]
v = 1
2
8
8
5
6
Tillämpning Matlab
7 1 8 2];
Att skriva skript
• (Del)matriser och (del)vektorer kan enkelt
byggas i hop till nya matriser och vektorer
Hösten 2010
Att arbeta med data

Listar existerande variabler
help

Skriver ut hjälp om en funktioner och
matlab
lookfor

23
Söker efter sökord bland existerande
funktioner
Hösten 2010
Tillämpning Matlab
24
2D Grafik
plot

2D Grafik
Tillämpning Matlab
Hösten 2010
Ritar ut en mängd av ordnade tal-par
>> x = 1:0.01:3;
>> y = 1./x;
>> plot(x, y, 'g:')
25
Tillämpning Matlab
Hösten 2010
Argument till plot
… 2D grafik
• Tar ett strängargument
• Flera funktioner för att anpassa plotten
Punkttyper
Linjetyper
Funktion Beskrivning
.
punkt
-
heldragen linje
*
asterisk
--
streckad linje
xlabel
Sätter etiketten på x-axeln
square
fyrkant
-.
punkt-streckad linje
ylabel
Sätter etiketten på y-axeln
diamond
ruta
:
prickad linje
titel
Sätter etiketten på plotten
hexagram
stjärna
Färgtyper
o
ring
g
grön
+
plusstecken
m
lila
x
kryss
b
blå
<
triangel vänster
c
turkos
>
triangel höger
k
svart
^
triangel upp
y
gul
v
triangel ned
r
röd
Hösten 2010
Tillämpning Matlab
• Möjlighet att spara plottar för att skriva ut
flera kurvor i samma graf med hold
27
2D Grafikexempel
>>
>>
>>
>>
26
Hösten 2010
Tillämpning Matlab
28
Tillämpning Matlab
30
2D Grafik
x = 1:0.01:3;
y1 = 1./x;
y2 = 1./x.^2
plot(x, y1, 'k:', x, y2, 'g-')
>> plot(x, y1, 'k:')
>> hold on
>> plot(x, y2, 'g-')
Hösten 2010
Tillämpning Matlab
29
Hösten 2010
...2D Grafik
• Fler grafikfunktioner
bar – skapar stapeldiagram
Kontrollstrukturer och
funktioner
pie – skapar cirkeldiagram
stem – skapar ett stamdiagram
Tillämpning Matlab
Hösten 2010
31
Kontrollstrukturer...
if logiskt uttryck
satser
end
for variabel = vektor
for (i=1; i<=n; i=i+2)
{
satser
}
satser
for i = 1:2:n
satser
if logiskt uttryck
satser
else
satser
end
for i in range(1, n+1, 2):
satser
end
if logiskt uttryck
satser
elseif logiskt uttryck
satser
end
for i = 1:n
satser
end
Hösten 2010
Tillämpning Matlab
33
…kontrollstrukturer
v = [1, 2, 3]
if v(1) == 1
satser
elseif v(2) == 2
satser
else
satser
end
Hösten 2010
Tillämpning Matlab
Hösten 2010
34
Jämförelseoperatorer
int v[3] = {1,2,3};
if (v[0] == 1) {
satser
} else if (v[1] == 2) {
satser
} else {
satser
}
v = [1, 2, 3]
if v[0] == 1:
satser
elif v[1] == 2:
satser
else:
satser
Tillämpning Matlab
32
…kontrollstrukturer
• for – iterering över vektor
end
Tillämpning Matlab
Hösten 2010
35
Operator
Matlab
C
Python
Lika med
==
==
==
Icke lika med
~=
!=
!=
Större än
>
>
>
Mindre än
<
<
<
och
&
&&
and
eller
|
||
or
Hösten 2010
Tillämpning Matlab
36
…kontrollstrukturer...
while logiskt uttryck
satser
end
x=0.1
while (x < 3) {
x *= 1.1
}
x=0.1
while x < 3
x = x*1.1
end
x=0.1
while x < 3:
x *= 1.1
Tillämpning Matlab
Hösten 2010
Funktioner
37
(annars en kommandofil)
Undantaget kommentarer
function [utparam] = namn(inparam)
% Pedher Johansson, 2010
• noll, en eller flera inparametrar
• noll, en eller flera utparametrar
• anropas med namn(parametrar)
y = a.*x.^2 + b.*x + c
• ingen return-sats behövs, utan utparameterns
värde används
val = namn(arg1, arg2)
Tillämpning Matlab
Hösten 2010
39
…funktioner
Hösten 2010
Tillämpning Matlab
40
Anonyma funktioner
>> help poly2
POLY2 second order polynom of x
• Enkla egna funktionsuttryck kan definieras
som anonyma funktioner
Y = POLY2(X,A,B,C,D) computes Y
such that Y = A*X^2+B*X+C
• Funktionen tilldelas en variabel
See also POLY, ROOTS
>> x = -1:0.1:1;
>> y = poly2(x, 1, 0, 0);
>> plot(x, y)
>> f = @(x) 1./x.^2
>> x = 0:0.01:1
Kommentarer först i funktionen skrivs ut när
man använder help
Jmf med Python
Hösten 2010
38
function y = poly2(x, a, b, c)
%
POLY2 second order polynom of x
%
%
Y = POLY2(X,A,B,C,D) computes Y
%
such that Y = A*X^2+B*X+C
%
%
See also POLY, ROOTS
• En funktion - en fil
• Filnamn ska vara lika med funktionsnamn
• Första raden skall innehålla ordet function

Tillämpning Matlab
…funktioner
Funktioner

Hösten 2010
Tillämpning Matlab
41
>> y = f(x)
Hösten 2010
Tillämpning Matlab
42
Dessutom
• Enkelt att skapa GUI




knappar
menyer
pop-up menyer
inmatningsfält
• Programbibliotek kan läggas till
(TOOLBOXES)
Hösten 2010
Tillämpning Matlab
43