Matlab-kommandoer Robert Jacobsen 9. august 2010 1 Kommandoer til Matlabs funktionaliteter Ønsker man at køre Matlab fra terminalen, ses de mulige options med matlab -help. For at starte Matlab uden det grafiske interface, kan man benytte kommandoen matlab -nodesktop Kører man Matlab, hvor der ikke er mulighed for at fremvise grafik (for eksempel over ssh uden -X eller -Y), vil kommandoen matlab blot starte Matlab uden det grafiske interface og uden mulighed for at fremvise grafik. quit lukker Matlab help kommando skriver dokumentationen for kommando i kommandolinien. Den samme information findes i hjælpebrowseren. I GUI: Tast F1 mens markøren er over en kommando for at få hjælpefilen i et lille vindue. Tryk F1 igen for at flytte fokus tilbage til kommandolinien. Tryk ESC for at lukke hjælpevinduet. Ønsker man at ændre hvilke undervinduer, der vises i Matlabs GUI, kan det indstilles i menuen Desktop. which funktion finder stien til funktion.m whos giver variable i workspace. pwd giver Current Folder. clear sletter alle gemte variable. clc rydder Command Window. For at undertrykke output fra en kommando benyttes semikolon efter kommandoen. 1
For at indtaste flere kommandoer på samme linie benyttes semikolon efter de kommandoer, man ikke ønsker output fra, og komma efter de kommandoer, man ønsker output fra (bortset fra den sidste kommando). Ønsker man ikke det første output fra en funktion, kan man benytte ~: >> [~, jb] = rref(a) j 1 2 2 Kommandoer til matematik i Matlab I de eksempler, hvor der benyttes kommandoer på matricen a, og denne ikke er specificeret, er [ ] 1 2 3. 4 5 6 Vektorer med ækvidistante indgange fås med start:skridt:slut. Bemærk, at start:slut er det samme som start:1:slut og at vi får en tom vektor hvis start > slut og skridt > 0. >> 1:10 1 2 3 4 5 6 7 8 9 10 >> 1:2:10 1 3 5 7 9 >> 2:2:10 2 4 6 8 10 >> 10:-1:1 2
10 9 8 7 6 5 4 3 2 1 >> 3:1 Empty matrix: 1-by-0 Indtastning af matricer: [ og ] starter og slutter en matrix. Mellemrum er en ny søjle indenfor rækken. Semikolon er ny række. Mange ofte brugte matricer har specialkommandoer. Det kan ofte bedre betale sig at være kreativ, end at taste for meget. >> [1 2 3 ; 4 5 6] % For meget tastearbejde! 1 2 3 4 5 6 >> ones(2,3) 1 1 1 1 1 1 >> eye(2) 1 0 0 1 >> eye(2,3) 1 0 0 0 1 0 >> zeros(2,3) 3
0 0 0 0 0 0 >> randi(10, 2, 3) 8 6 9 3 7 10 >> reshape(1:6, 2, 3) 1 3 5 2 4 6 Delmatricer af en matrix tilgås ved at specificere hvilke indices, man ønsker, fra den pågældende matrix. Ønsker man ikke-på-hinanden-følgende søjler eller rækker, skal de ønskede søjler/rækker specificeres i en vektor. >> reshape(1:12, 3, []) 1 4 7 10 2 5 8 11 3 6 9 12 >> a(1,3) 7 >> a(2, 2:3) 5 8 >> a(1:2, 2:3) 4
4 7 5 8 >> a(1, :) 1 4 7 10 >> a(1:2, :) 1 4 7 10 2 5 8 11 >> a(:, 3) 7 8 9 >> a(3, [2 4]) 6 12 >> a([1 3], [2 4]) 4 10 6 12 >> a(2, 1:2:end) 2 8 5
size giver dimensionen af en matrix. >> size(a) 2 3 flipud drejer en søjlerne i matrix. >> flipud(a) 2 4 6 1 3 5 og fliplr drejer rækkerne i en matrix. >> c = fliplr(a) c = 5 3 1 6 4 2 Apostrof bruges til transponering. >> a 1 2 3 4 5 6 rref udregner den rækkereducerede echolonform af en matrix. >> rref(a) 1 0-1 0 1 2 Addition (+), subtraktion (-) og multiplikation (*) virker som sædvanligt. Elementvise operationer: multiplikation (.*), division (./), eksponering (.^) 6
>> [1 2 ; 3 4], [5 6 ; 7 8] 1 2 3 4 5 6 7 8 >> a.*b, a./b, a.^b 5 12 21 32 0.2 0.33333 0.42857 0.5 1 64 2187 65536 Funktioner med definitionsmængde C anvendes elementvis. >> sin([1 2 ; 3 4]) 0.84147 0.9093 0.14112-0.7568 mldivide (eller \) foretager matrixdivision fra venstre og kan bruges som en alternativ måde til at løse ligninger >> A = magic(3) 7
A = 8 1 6 3 5 7 4 9 2 >> [1;2;3] 1 2 3 >> x = mldivide(a, b), A\b x = 0.0500 0.3000 0.0500 0.0500 0.3000 0.0500 inv giver den inverse af en invertibel matrix. >> inv([2 5 ; -3-7]) -7.0000-5.0000 3.0000 2.0000 det udregner determinanten af en matrix. >> det([2 5 ; -3-7]) 1 lu giver LU dekompositionen af en matrix. 8
>> [L, U] = lu([2 5 ; -3-7]) L = -0.6667 1.0000 1.0000 0 U = -3.0000-7.0000 0 0.3333 eig giver egenværdier og -vektorer af en matrix. >> randi(10,2) 5 2 5 6 >> d = eig(a) d = 2.2984 8.7016 >> [V,D] = eig(a) V = -0.59501-0.47536 0.80372-0.87979 D = 2.2984 0 0 8.7016 poly udregner koefficienterne i det karakteristiske polynomium af en matrix. >> poly(reshape(1:9, 3, 3)) 9
1.0000-15.0000-18.0000-0.0000 roots finder rødderne i et polynomium, hvis koefficienter er specificeret efter aftagende potens. >> roots(poly(reshape(1:9, 3, 3))) 16.1168-1.1168-0.0000 norm udregner normen af en matrix eller vektor. Syntaksen afhænger af, om input er en vektor eller en matrix. gs (funktion fra hjemmesiden http://math.illinoisstate.edu/matrix/downloads. html) er en implementation af Gram-Schmidt algoritmen. Søjlerne i output er ortogonale med samme spænd som søjlerne i input. >> gs([2 5 ; -3-7]) 2.0000 0.2308-3.0000 0.1538 qr udregner QR-dekompositionen af en matrixx. >> [Q, R] = qr([2 5 ; -3-7]) Q = -0.5547 0.8321 0.8321 0.5547 R = -3.6056-8.5979 0 0.2774 svd udregner Singular Value Dekompositionen af en matrix. >> [U,S,V] = svd(reshape(1:8, [], 2)) 10
U = -0.3521-0.7590-0.4001-0.3741-0.4436-0.3212 0.2546 0.7970-0.5352 0.1165 0.6910-0.4717-0.6268 0.5542-0.5455 0.0488 S = 14.2274 0 0 1.2573 0 0 0 0 V = -0.3762 0.9266-0.9266-0.3762 polyfit udregner koefficienterne til et polynomium, der approksimerer (efter mindste kvadraters metode) givne data >> x = -2:2, y = [3 5 5 4 3] x = -2-1 0 1 2 y = 3 5 5 4 3 >> p = polyfit(x, y, 1) p = -0.1 4 Plot eventuelt data og det approksimerende førstegrads polynomium. >> f = polyval(p,x), plot(x,y, o,x,f) 11