KPP053, HT2016 MATLAB, Föreläsning 2

KPP053, HT2016
MATLAB, Föreläsning 2
•
•
•
•
Vektorer
Matriser
Plotta i 2D
Teckensträngar
Vektorer
› För att skapa vektorn x = [ 0 1 1 2 3 5]:
>> x = [0 1 1 2 3 5]
x =
0
1
1
2
3
5
› För att ändra (eller lägga till) ett element i x:
>> x(7)=8
x =
0
1
1
2
3
5
8
Vektorer
› För att ”hämta” ett element i x:
>> x(7)
ans =
8
› För att ”hämta” 3:e till 6:e elementet i x:
>> x(3:7)
ans =
1
2
3
5
8
Vektorer
› För att ”hämta” vartannat element från 3 till 7:
>> x(3:2:7)
ans =
1
3
8
› För att ”hämta” (t.ex) det 3:e, 4:e och 7:e elementet ges en
vektor:
>> x([ 3 4 7 ])
ans =
1
2
8
Att ta bort element ur en vektor
› Ta bort ett specifikt element [ ]:
>> x(7) = [] %ersätter x(7) med en tom vektor
x =
0
1
1
2
3
2
3
› Ta bort sista värdet ur x:
>> x(length(x)) = []
ans =
0
1
1
5
Vektorer med konstant stegavstånd:
› För att skapa vektorn x = [ 0 1 2 3 4 5 6 7 ]:
>> x = 0:7
x =
0
1
2
3
4
5
6
7
› För att skapa vektorn x = [ 0,0 0,5 1,0 1,5 2,0 2,5 3,0 ]
>> x = 0:0.5:3
x =
0 0.50 1.00 1.50 2.00 2.50 3.00
linspace(a,b) och linspace(a,b,n)
› Skapar en vektor med n element där första elementet är a
och sista elementet är b.
› För linspace(a,b) blir n = 100.
Matriser
1 2
› Ange matrisen 𝐴 = 5 6
9 10
>> A = [1 2 3 4 ; 5 6 7
3
5
7
8
4
6
8
; 9 10 11 12 ]
% semikolon indikerar radbyte
A =
1
2
3
4
5
6
7
8
9
10
11
12
Man kan även slå en ny rad direkt i kommandofönstret (eller i en .m-fil):
>> A = [ 1 2 3 4
5 6 7 8
9 10 11 12]
A =
1
2
3
4
5
6
7
8
9
10
11
12
Delmatriser
› Ett enstaka element ur A kan hämtas med A(j,k) där j är
elementets rad och k är elementets kolumn.
› Vill man hämta flera element ur A kan man i stället använda ange
interval.
(samma A som tidigare)
>> A(2:3,3:4) %ger 3e till 4e kolumnen av rad 2-3
ans =
7
8
11
12
Delmatriser (fortsättning)
› Det går naturligtvis också att ange ett heltal och en intervall.
(samma A som tidigare)
>> A(3,3:4) %ger 3e till 4e kolumnen av rad 3
ans =
11
12
› Anges ett kolon utan heltal får man hela raden eller hela kolumnen i
stället för ett intervall.
>> A(3,:) %ger alla kolumner av rad 3
ans =
9
10
11
12
Sammansättning av matriser och vektorer
› Sammansatta matriser och vektorer kan fås genom att ange en
vektor/matris vars element i sin tur är vektorer/matriser. Ex:
>> x1 = [ 1 2 3 4 ]; x2 = [ 5 6 7 8 ];
>> x = [ x1 x2 ]
x =
1
2
3
4
5
6
7
8
>> A = [ x1 ; x2 ]
A =
1
2
3
4
5
6
7
8
Funktioner som genererar specifika matriser
zeros(n)
%ger en n×n matris av nollor
zeros(m,n)
%ger en m×n matris av nollor
ones(n)
%ger en n×n matris av ettor
ones(m,n)
%ger en m×n matris av ettor
eye(n)
%ger en n×n identitetsmatris
Funktioner som genererar slumpmatriser:
› rand(n) eller rand(m,n) genererar en matris av jämt
fördelade slumpvärden mellan 0 och 1.
› randn(n) eller randn(m,n) genererar en matris av
normalfördelade slumptal.
› randi(imax,n) eller randi(imax,m,n)generer en
slumpmatris av jämt fördelade heltal mellan 0 och imax.
Vanliga räkneoperationer med matriser.
› En skalär kan adderas till eller subtraheras från en matris
(eller vektor).
› En matris (eller vektor) kan multipliceras med eller divideras
med en skalär:
› Två matris (eller vektorer) av samma storlek kan subtraheras
eller adderas med varandra.
› I alla dessa fall används standartecknet för respektive
operation.
Elementvis räkneoperationer med matriser.
› Varje element i en matris multipliceras med motsvarande element ur en annan matris.
Exempel:
>> A = [ 2 3 5; 1 9 4 ]
A =
>>
2
3
5
1
9
4
B = [3 2 3; 3 2 3]
B =
3
2
3
3
2
3
6
6
15
3
18
12
>> A.*B
ans =
Elementvis räkneoperationer med matriser
(forts.)
› Varje element i en matris divideras med motsvarande element ur
en annan matris. Exempel (samma A och B som tidigare):
>> A./B
ans =
2/3
3/2
5/3
1/3
9/2
4/3
› Varje element i en matris kan upphöjas till någon lämplig
exponent.
>> A.^3
ans =
8
27
125
1
729
64
Matrismultiplikation (matrisprodukt)
› Om multiplikationstecken används utan punkt genom får vi
matrisprodukten (förutsätt att antalet rader i A matchar antalet
kolumner i B)
>> B = B'
%B' transponerar B.
B =
3
3
2
2
3
3
>> A*B
ans =
27
27
33
33
Några inbyggda funktioner för matriser och
vektorer
length(x)
max(x)
min(x)
mean(x)
sum(x)
dot(x,y)
cross(x,y)
size(A)
inv(A)
%ger
%ger
%ger
%ger
%ger
%ger
%ger
%ger
%ger
längden av vektorn x
största elementet i vektorn x
minsta elementet i vektorn x
medelvärdet av elementen i x
summan elementen i vektorn x
skalärprodukten x∙y
vektorprodukten x×y
storleken n×m av matrisen A
inversmatrisen för A
Fler funktioner finns på sidan 68 i kursboken.
Ekvationssystem (igen)
› A\b ger en vektor x så att 𝐴 × 𝑥 = 𝑏.
› b/A ger en vektor x så att 𝑥 × 𝐴 = 𝑏.
Tillämpning av vektorer:
Plotta en trigonometrisk funktion
x = linspace(-pi,pi);
y = sin(x);
%varje element i y blir
%sinusvärdet för motsvarande
%element i x
plot(x,y);
Grafen för y = sin(x) öppnas i nytt fönster:
Tillämpning av vektorer:
Plotta grafen x3 - 2x2 + 4x - 10
x = linspace(-10,10);
%godtyckligt intervall
% punkt framför * och ^ ger elmentvis operation
y = x.^3 – 2.*x.^2 + 4.*x – 10
plot(x,y);
OBS: Detta kan även göras genom att definiera en anonym
funktion (då behövs ej punkterna):
f = @(x) x^3 – 2*x^2 + 4*x – 10;
y = f(x);
Teckensträngar
› En teckensträng är en vektor där de lagrade värdena motsvarar
tecken.
› Skapas i en tilldelningssats med enkla citattecken ex:
--> s = 'Hello world!'
s =
Hello world!
› Som med en vanlig vektor kan man ändra (eller radera) ett
enstaka element:
--> s(12)='?'
s =
Hello world?
Teckensträngar (forts.)
› Som med en vanlig vektor kan man ändra (eller radera) ett enstaka (eller flera)
element ur en teckensträng:
--> s1 = s(1:5)
s1 =
Hello
--> s2 = s(length(s))
s2 =
?
› eller sätta ihop två strängar:
--> s = [s1 s2]
s =
Hello?
Teckensträngar (forts.)
› Funktionen num2str() kan användas för att konvertera nummer till teckensträngar.
>> tau = num2str(2*pi)
%Detta konverterar det numeriska
tau =
%värdet 2*pi till teckensträngen
6.2832
%’6.2832’
› Det går även att specificera hur många värdesiffror som skall ingå.
>> tau = num2str(2*pi,8)
%resulterar i 7 värdesiffror
tau =
%eftersom en plats i teckensträngen
6.2831853
%tas upp av decimalkommat
› Funktionen är användbar när nummer behöver infogas i textsträngar.