Föreläsning 15 Matlab överkurs KTH, CSC, Vahid Mosavat
Standardmatriser zeros(n) ger nxn-matris med bara nollor. zeros(m,n) ger motsvarande mxn-matris. ones(n) ger nxn-matris med bara ettor. ones(m,n) ger motsvarande mxn-matris. eye(n) ger nxn-identitetsmatrisen (ettor på diagonalen och nollor annars) eye(m,n) ger motsvarande mxn-matris
Hjälp med Matlab Skumma igenom häftet från studentexpeditionen. Använd Matlabs inbyggda hjälp: Klicka på menyn ”Help” och välj alternativet ”Product Help”. Där kan man söka efter nyckelord. Googla!
Elementvisa operationer Om vi har en mxn-matris A och en nxk-matris B så gör följande en matrismultiplikation: C=A*B C=A.*B gör istället elementvis multiplikation. Motsvarande gäller / och ./, och ^ och . ^. Varför finns det inte en operator .+?
Inversen av matris En nxn-matris A har en invers om det existerar en matris B sådan att A*B=I, där I är identitetsmatrisen. inv(A) ger inversen till A i Matlab. Vi kan (om lösbart) lösa A*x=b i Matlab enligt: x=inv(A)*A*x=inv(A)*b Varför är x=A\b ett bättre sätt att göra detta?
Matrisfunktioner Låt A vara en matris: rank(A) ger rangen för matrisen A. det(A) ger matrisens determinant om A är kvadratisk. [D,V]=eig(A) ger matrisens egenvärden som diagonalmatris D och egenvektorer som kolumnvektorer i V. Dvs: A*V=V*D
Formattering av utdata disp(x) skriver ut objektet x, men det finns flera olika standardformat: short, long, short e, short g, long e, long g, bank, hex, rat, compact, loose. Prova och se vad som händer!
switch-sats När man har många alternativ beskrivna av ett tal: switch (uttryck) case värde, vad som skall göras otherwise, end
Komplexa tal Komplexa tal förekommer relativt ofta i tekniska tillämpningar. Matlab kan hantera komplexa tal. Bokstäverna i och j representerar den imaginära enheten. Tänk igenom vad ni plottar om ni använder komplexa tal! (lätt att göra fel)
Slumptal rand ger likformigt fördelat tal i [0,1]. rand(n) ger nxn-matris med sådana tal. rand(m,n) ger motsvarande mxn-matris. randn ger normalfördelat tal. Randint(m,n,[3,5]) ger likformigt fördelad mxn-heltalsmatris.
Rita upp funktionsgraf Skapa vektor med evalueringspunkter: x=0:0.1:2*pi Skapa vektor med funktionsvärden: y=sin(x) Rita linjer mellan punkterna: plot(x,y)
Andra sätt att visualisera data bar(x,y) stapeldiagram barh(x,y) horisontellt stapeldiagram pie(y) tårtdiagram stairs(x,y) trapstegsdiagram stem(x,y) variant på stapeldiagram
Enklare sätt att rita funktionsgraf ezplot – ”easy-plot”: Ange funktion och intervall: ezplot(’sin’,[0,2*pi]) Glöm inte enkelfnuttarna! fplot fungerar liknande som ezplot, men väljer punkter adaptivt.
Enklare sätt att rita funktionsgraf fplot kan också användas enligt: f=@sin fplot(f,[0,2*pi]) fplot(’x^2’,[0,10])
Histogram Skapa 1000 normalfördelade värden: y=randn(1000,1) Rita histogram med 15 intervall: hist(y,15)
3D-kurva Skapa punkter: t=0:0.1:10; x=exp(-0.2*t).*cos(2t); y=exp(-0.2*t).*sin(2t); Rita upp kurvan: plot3(x,y,t)
Rita yta i rummet Skapa ett nät av evalueringspunkter: [x,y]=meshgrid(-4:0.1:4, -4:0.1:4); Evaluera funktion i varje sådan punkt: z=exp(-0.5*(x.^2+y.^2)); Rita upp resultatet: mesh(x,y,z);
Aspekter av yta i rummet Rita upp höjdkurvor för ytan: contour(x,y,z); Rita upp ytan och inte bara nätet: surf(x,yz)
Lägg till information legend(’kurva1’, ’kurva2’) ger faktaruta xlabel(’text på x-axeln’) ylabel(’text på y-axeln’) zlabel(’text på z-axeln’) title(’Min titel på grafen’) text(3,4,’extra info’)
Flera kurvor samtidigt (Alt 1) Alternativ 1: x=0:0.1:10; y=x.^2 z=z.^3 plot(x,y,x,z)
Flera kurvor samtidigt (Alt 2) x=0:0.1:10; y=x.^2 plot(x,y) hold on z=x.^2 plot(x,z) hold off
Färger och linjer x=0:0.1:10; y=x.^2 plot(x,y,’g--’) Färger: b,g,r,c,m,y,k,w Linjer: - : -. --
Delfönster x=0:0.1:10; y=x.^2 subplot(1,1,1) plot(x,y) z=x.^2 plot(x,z)
Lycka till!