Fagets IT Introduktion til MATLAB Mads G. Christensen mgc@kom.auc.dk Afdeling for Kommunikationsteknologi, Aalborg Universitet. MATLAB 2002 p.1/28
Kursusoversigt 1. Introduktion, matrix-indeksering, -operationer og -manupulation. 2. Plot, eksportering og formattering af plot, hente og gemme data. 3. Programmering i MATLAB, script, funktioner. 4. Løsning af standardproblemer vha. MATLAB. Kurset holdes på et praktisk niveau med et minimum af teori, og der gives masser af eksempler. Forelæsningerne vil være forholdsvis korte, så I kan få god tid til opgaverne. MATLAB 2002 p.2/28
Om kurset MATLAB-kurset er et PE-kursus og støtter som sådan op om jeres projektarbejde og vil blive evalueret igennem projektet. Det forventes således, at I anvender MATLAB i situationer, hvor det måtte være relevant i projektet. Dette kan være til at udføre simuleringer på en model (f.eks. kredsløbsmodel) i jeres projekt. Eller til dataanalyse hvor data opsamles eller genereres og visualiseres (dvs. til at lave figurer til rapport). Tal endelig med lærer/hjælpelærer under opgaveløsningen om mulige applikationer af MATLAB i jeres projekt. MATLAB bruges på overbygningen for elektronik og datateknik, og I vil få stor nytte af det hele vejen igennem studiet. MATLAB 2002 p.3/28
Emner mm1 af 4: Hva MATLAB er Hjælp og litteratur Matematiske udtryk i MATLAB Matrix-indeksering, -operationer og -manipulation MATLAB 2002 p.4/28
Hva MATLAB er MATLAB er et program til numeriske, tekniske beregninger. Det kan bruges til Forskning og udvikling Avanceret lommeregner Simuleringer Dataanalyse (visualisering, f.eks. figurer til rapport) Prototyping (nem implementation) Eksempler på toolboxes: Digital Signal Processing Image Processing Control, etc. MATLAB 2002 p.5/28
Hælp og litteratur Hjælp i/til MATLAB: demo help <funktion> lookfor <ord> info <funktion> Litteratur (gratis): http://www.mathworks.com/access/helpdesk/- help/pdf_doc/matlab/getstart.pdf http://www.mathworks.com/access/helpdesk/- help/techdoc/matlab.shtml http://www.eece.maine.edu/mm/matweb.html MATLAB 2002 p.6/28
Udtryk i MATLAB MATLAB er opbygget omkring matematiske udtryk. I modsætning til de fleste programmeringssprog kan disse indholde hele matricer. Udtryk opbygges af: Eksempel: Variable (a=5) Tal (1, 1.1, -99, 6.02252e23m -3.14159j) Operatorer (+, -, *, /) Funktioner (sqrt(), sin()) >> a=(1+sqrt(5))/2 a = 1.6180 MATLAB 2002 p.7/28
Operatorer Operatorer og præcedensregler: + Addition Subtraktion Multiplikation / Division ˆ Potens Kompleks konjugering () Specifikation af evalueringsrækkefølge MATLAB 2002 p.8/28
Udtryk i MATLAB Flere funktioner kan angives en linie. Disse separeres vha., eller ; alt efter om output skal vises. Eks.: >> sin(0);cos(0); >> sin(0),cos(0); 0 >> sin(0),cos(0) 0 1 Hvis et udtryk fortsættes på næste linie angives dette med... MATLAB 2002 p.9/28
Matricer Den basale datastruktur i MATLAB er en matrix, og MATLAB er bygget op om lineær algebra, heraf navnet. En matrix er en 2-dimensional array (tabel) indeholdende elementer a ij : a 11 a 12... a 1N a 21 a 22... a 2N A = (1)... a M1 a M2... a MN Dette kaldes en M N matrix, hvor M er antal rækker og N antal søjler. MATLAB 2002 p.10/28
Matricer En matrix genereres i MATLAB ved: >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 Dvs. elementerne i en række separeres vha. space og i søjler med ;. Størrelsen af en matrix kan findes ved: >> size(a) 2 3 Som I kan se, er en vektor en M 1 eller 1 M matrix, og en skalar er en 1 1 matrix. MATLAB 2002 p.11/28
a M1 x 1 + a M2 x 2... a MN x N = b M (2) Matricer En matrix er en kompakt repræsentation af en række lineære udtryk, hvor vi ønsker at finde de ubekendte x 1... x M : a 11 x 1 + a 12 x 2... a 1N x N = b 1 a 21 x 1 + a 22 x 2... a 2N x N = b 2. =. Ved at skrive de ukendte parametre som en søjlevektor x og b 1... b M som b fås: Ax = b MATLAB 2002 p.12/28
Mactricer Altså: a 11 a 12... a 1N a 21 a 22... a 2N...... x 1 x 2.. = b 1 b 2.. (4) a M1 a M2... a MN x N b M hvor b i = N a ij x j (5) j=1 MATLAB 2002 p.13/28
Indeksering Elementet i række i, søjle j af matrix A angives i MATLAB A(i, j): >> A=[1 2 3;4 5 6]; >> A(2,3) 6 >> A(1:2,3) 3 6 >> A(1,:) 1 2 3 Indices i MATLAB er positive heltal og starter med 1 (træls)! MATLAB 2002 p.14/28
Kolon-operatoren Kolon-operatoren kan bruges til at generere vektorer: >> 3:5 3 4 5 >> -1:-2:-5-1 -3-5 >> 1:0.1:1.5 1 1.1 1.2 1.3 1.4 1.5 MATLAB 2002 p.15/28
Søjle- og rækkevektorer En søjlevektor laves om til en rækkevektor ved transponering: >> A=[1 2 3] A = 1 2 3 >> A. 1 2 3 Bemærk: A er en hermitisk transponering, dvs. den kompleks-konjugerer også! fliplr() eller flipud bruges til at reversere rækkefølgen af elementerne i en matrix i vertikal eller horizontal retning. MATLAB 2002 p.16/28
Matricer (specialtilfælde) Tom matrix angives med []. Denne kan bruges til at slette søjler/rækker: >> A=[1 2 3; 4 5 6]; >> A(:,2)=[] A = 1 3 4 6 Det sidste indeks i et indekseringsudtryk kan findes med end(): >> A(end,end) 6 MATLAB 2002 p.17/28
Array-operatorer Array-operationer (elementvis): >> A=[1 2 3]; A.^2 1 4 9 >> A.^[0 1 2] 1 2 9 >> A./[2 1 2] 0.5000 2.0000 1.5000 >> A.*[2 1 2] 2 2 6 MATLAB 2002 p.18/28
Matrix/skalar-operationer Addition af matrix og skalar: >> [1 2; 3 4]-5-4 -3-2 -1 Skalering af matrix med skalar: >> [1 2; 3 4]*3 3 6 9 12 MATLAB 2002 p.19/28
Matrix-operationer Addition/subtraktion af matricer: >> [1 2; 3 4]-[1 2 3]??? Error using ==> - Matrix dimensions must agree. >> [1 2; 3 4]-[1 0; 0 1] 0 2 3 3 Addition/subtraktion af matricer er kun defineret for matricer af samme størrelse. De fleste (begynder-)problemer i MATLAB er relateret til indeksering og størrelser på matricerne! MATLAB 2002 p.20/28
Matrix-multiplikation Matrix-multiplikation: AB = C Elementerne i matricen C er givet ved: c ij = n a ik b kj k=1 a i1 a i1... a i5 b 1j b 2j. b 5j = c ij MATLAB 2002 p.21/28
Matrix-multiplikation Heraf følger at antal søjler i A skal svare til antal rækker i B: Eksempel: m rækker n søjler >> A=[1 2 3;4 5 6]; >> B=[1 2;1 2;1 2]; >> A*B 6 12 15 30 n rækker p søjler = m rækker p søjler MATLAB 2002 p.22/28
Præcision og format MATLAB benytter double precision IEEE floating point (64 bit). Hertil hører et par specialtilfælde NaN og Inf: >> 1/0 Inf >> 0/0 NaN Hvordan output skal vises styres med format. Se help format. MATLAB 2002 p.23/28
Komplekse tal Komplekse tal (i- og j-operatorerne): >> sqrt(-1) 0 + 1.0000i >> j^2-1 Omskrivning til polær repræsentation af komplekse tal gøres vha. abs() og angle(). MATLAB 2002 p.24/28
Operatorer Matrix-operationer: + Addition [1 2 3]+[4 5 6]=[5 7 9] Subtraktion [1 2 3]-[4 5 6]=[-3-3 -3] Multiplikation [1 2 3]*[4; 5; 6]=32 ˆ Potens [1 2; 3 4]^2=[7 10; 15 22] Array-operationer (elementvise):.ˆ Potens [1 2 3].^[0 2 1]=[1 4 3]./ Division [1 2 3]./[2 1 3]=[0.5 2 1]. Multiplikation [1 2 3].*[2 1 2]=[2 2 6] MATLAB 2002 p.25/28
Matrix-manipulation Der findes en række funktioner til at manipulere med matricer. repmat() er en af dem. Denne gentager matricer et antal gange: >> A=[1 2;3 4]; >> repmat(a,2,2) 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 Dvs. hvis A er M N og vi kalder repmat(a,k,l), så får vi en matrix ud med dimensionerne MK NL. MATLAB 2002 p.26/28
Matrix-manipulation En anden nyttig funktion er reshape(). reshape(a,m,n) returneres en M N matrix. Eks. >> A=[1 2;3 4;5 6] A = 1 2 3 4 5 6 >> reshape(a,2,3) 1 5 4 3 2 6 Elementerne tages søjlevis fra A (den skal have MN elementer i alt). MATLAB 2002 p.27/28
Introduktion til MATLAB MATLAB kan kun læres på en måde: Just do it! Opgaver, slides og senere også opgavebesvarelser kan findes på http://kom.auc.dk/ mgc/teaching/matlab/ MATLAB 2002 p.28/28