MATLAB Indledning II Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005
Hvor er matricen ? Skiverne skal pakkes i pakker af ca. samme vægt. Hvad er vægten af de næste skiver?
Hvor er matricen ? Skivevægt (gram) for Fisk1: Skivevægt (gram) for Fisk2:
Hvor er Matricen ? Et kulpartikel brænder: - Nogle dele er dækket af en askeflage - Andre dele er glød Hvordan udvikler det sig ?
En model function Pnext = step(P,f) % Simulering af forbrænding: emne % er matrix P % med glød = 1 % aske = 0
Delmatricer A(2:3,1:2) A(2,2) A(1,:) A(1:2:3,1:2:3) A(pi,pi) A = » A(2:3,1:2) » A(2,2)5 » A(1,:)1 2 3 » A(1:2:3,1:2:3) » A(pi,pi) Warning: Subscript indices must be integer values. 9
Hvor er matricen ?
Billedbehandling » Udsnit = B(101:104, 301:304, :) Rød Grøn Blå
Transponering Transponering af A A’ Ombytter rækker og søjler » D = [ ; ] D = » D' » A'
Specielle Matricer Nulmatrix Enhedsmatrix Etmatrix Tom matrix Tilfældige tal … Se help elmat » zeros(2,3) » eye(2,3) » ones(2,3) » A = [] » size(A) 0 0 » rand(2,3)
Bygning af Matricer a = » A = [a ; a] » B = [A, [4 ;4]] » C = [A ; a] » D = [A, a] ??? All matrices on a row in the bracketed expression must have the same number of rows. » D = [A, a'] ??? All matrices on a row in the bracketed expression must have the same number of rows. » D = [C, a']
Hvor er Matricen ?
Kinematik p = [x, y]’ w 1 = [a,b] ‘ A = [ cos(theta) sin(theta) ; -sin(theta) cos(theta) ] w l GLOBAL = (p + A * w 1 )’
Hvordan bruges det ? p = [x, y] w 1 = [a,b] -- lokalt A = [ cos(theta) sin(theta) -sin(theta) cos(theta) ] w l GLOBAL = (p’ + A * w 1 ’)’
Matrix-Division X = A / B betyder at X * B = A Y = A \ B betyder at A * Y = B » X = A/B X = » X*B » Y = » A*Y \ “op i”
Hvordan bruges det ? p = [x, y] w 1 = [a,b] -- lokalt A = [ cos(theta) sin(theta) -sin(theta) cos(theta) ] w l GLOBAL = (p’ + A * w 1 ’)’ w 1 ‘ = A \ (w l GLOBAL ‘ – p’)
Et eksempel p =[p1,p2] q =[q1,q2] Hvad er ligningen for linjen ? y = ax + b – find a og b [p2 ; q2] = [p1 1 ; q1 1] * [a ; b] [p1 1; q1 1] \ [p2 ; q2] = [a ; b]
En løsning [p1 1; q1 1] \ [p2 q 2]’ = [a b]’ » p = [0 0]; q = [1 1]; » A = [p(1) 1; q(1) 1]; a = [p(2) q(2)]; » x = A\a' x = 1 0 findlinje.m » p = [1 1]; q = [3,4]; » findlinje x = » p = [1 1]; q = p; findlinje Warning: Matrix is singular to working precision. x = Inf
Overbestemthed p =[p1,p2] q =[q1,q2] Find den bedste løsning ! y = ax + b [p2; q2; r2] = [p1 1 ; q1 1; r1 1] * [a ; b] r =[r1,r2]
Bedste løsning [p1 1; q1 1; r1 1] \ [p2; q2; r2] = [a ;b] » p = [0 0]; q = [1 1]; r = [2 1] » A = [p(1) 1; q(1) 1; r(1) 1]; a = [p(2) q(2) r(2)]; » x = A\a' x =
Polynomier [a n a n-1 a n-2 … a 1 a 0 ] * [x n x n-1 x n-2 … x 1 ]’ » roots([1 -2 1]) ans = 1 » roots([ ]) ans = i i » roots([ ]) ans = i i
» p2 = [1 -2 1]; » p3 = [ ]; » p4 = [ ]; » x = 0.6:0.05:1.4; » plot(x,polyval(p2,x), x, polyval(p3,x), x,polyval(p4,x), x,polyval([0],x) ) Undersøgelse
Andre Operationer » A^2» A*A » hilb(2) » A * hilb(2) == hilb(2) *A » A * hilb(2) » hilb(2) * A
Næste gang … Programmer: FOR …, IF …