Introduktion till MATLAB Martin Nilsson Avdelningen för teknisk databehandling Institutionen för informationsteknologi Uppsala universitet MATLAB the Matrix Laboratory utvecklat av MathWorks, Inc. Matematisk laborationsmiljö för: Numeriska beräkningar Grafik Programmering Introduktion till MATLAB: sid 1 av Introduktion till MATLAB: sid av Enkel användning: >> a=75 a = 75 >> b=34; >> c=a*b c = 550 Variabler i MATLAB Behöver inte deklareras (skapas när de behövs) Alla variabler är matriser (skalär = 1 1-matris) Heltal/reell/komplex (Logisk: 0=falskt, 1=sant) Semikolon undertrycker utskrift av beräknat resultat. Introduktion till MATLAB: sid 3 av Introduktion till MATLAB: sid 4 av
A = 17 53 Hur skapas en matris? Matrisalgebra >> x=[; 1] eller >> A=[1 7; 5 3]; x= 1 >> A=[1 7 5 3] A= 1 7 5 3 >> b=a*x b= 9 13 Retur eller semikolon ger ny rad i matrisen. Introduktion till MATLAB: sid 5 av Introduktion till MATLAB: sid 6 av Alt 1 Att bygga ut en matris >> A=[A; 1]; Alt >> temp=x temp= 1 >> A=[A; temp]; Alt 3 >> A(3,1)= A= 1 7 5 3 0 >> A(3,)=1 A= 1 7 5 3 1 A = 17 53 1 Ospecificerat blir 0 >> clear Smått och gott >> a=[1 7; 5 3]; a^, a.^ ans= 36 8 0 44 ans= 1 49 5 9 Matrismultiplikation: a*a Elementvis multiplikation Flera kommandon skiljs av semikolon eller kommatecken a 11 a 1 a 1 a Introduktion till MATLAB: sid 7 av Introduktion till MATLAB: sid 8 av
Funktioner och operatorer / högerdivision t/n = t*n -1 min(x) Fler funktioner Minsta värdet i x, kolonnvis om x är en matris \ vänsterdivision n\t= n -1 *t abs(x) absolutbeloppet sqrt(x) kvadratroten sin(x) sinus log(x) naturliga logaritmen, ln log10(x) 10-logaritmen Svaren blir vektor av samma längd som x max(x) x > 3.7 Största värdet i x, kolonnvis om x är en matris Matris lika stor som x med 1:a för varje element där x>3.7 och 0:a där x<=3.7 find(x>3.7) Index till de element i x som är >3.7 sum(x) mean(x) std(x) Summan av elementen i x Medelvärdet av elementen i x Standardavvikelsen av elementen i x Introduktion till MATLAB: sid 9 av Introduktion till MATLAB: sid 10 av Egna funktioner Exempel: Rita upp kurvan y=x Vi visar med ett exempel: Följande kommandorader sparas i en fil med namn "f0.m" function varde=f0(x1,x) varde=sin(x1+7*x)-exp(x1.*x); f 0 ( x 1, x ) sin( x 1 + 7x ) e x 1 x = Klarar vektorer Funktionen används som vanligt i MATLAB >> y=f0(13,4); ger y = sin( 13 + 7 4) e 13 4 Ingen utskrift >> % Kommentarer skrivs efter %-tecknet >> x=-:; % vektor med heltal >> y=x^; % Matrismultiplikation??? Error using ==> ^ Matrix must be square. >> y=x.^; % Elementvis multiplikation >> plot(x,y) % Obs! x före y! Introduktion till MATLAB: sid 11 av Introduktion till MATLAB: sid 1 av
4 3.5 3.5 >> x=linspace(-,); Ger 100 värden mellan - och >> y=x.^; >> plot(x,y) 4 3.5 1.5 3 1.5 0.5 0 1.5 1 0.5 0 0.5 1 1.5 1.5 Inte så snyggt! Datorn drar räta linjer mellan punkterna tänker inte själv Fler punkter ger mjukare kurva... 1 0.5 0 1.5 1 0.5 0 0.5 1 1.5 Introduktion till MATLAB: sid 13 av Introduktion till MATLAB: sid 14 av Programmering med MATLAB Ett MATLAB-program är en fil med MATLAB-kommandon, s.k. kommandofil eller.m-fil. Filens namn måste sluta på.m Programmet körs i MATLAB genom att skriva filnamnet (utom avslutande.m) vid MATLAB-promptern MATLAB kan anropa funktioner skrivna i andra programmeringsspråk, t.ex. C, C++ eller Fortran, men man kan även anropa MATLAB från t.ex. ett C++program. Utdata från andra program (i textfil) kan läsas in i MATLAB för att bearbetas och åskådliggöras Villkorssatser, exempel If-sats : k = input( Ge ett tal : ); if k == 0 disp( Talet är noll ); elseif k > 0 disp( Talet är positivt ); else disp( Talet är negativt ); Obs! =-tecken vid jämförelse, ett betyder tilldelning Obs! elseif-konstruktion Introduktion till MATLAB: sid 15 av Introduktion till MATLAB: sid 16 av
For : While : Repetionssatser, exempel x = ( 46,,,, 0) for i=1:10 x(i)=*i; disp( Läser in positiva tal ) k = 1; i = 1; while k > 0 k = input( Ge ett tal : ); x(i) = k; % Spara talen i vektorn x i = i + 1; Löses med Lösa ett linjärt ekvationssystem x 1 + x = 3x 1 + 5x = 3 ger >>x=a\b x= -4.0000 3.0000 1 35 x = 3 Ax = b Introduktion till MATLAB: sid 17 av Introduktion till MATLAB: sid 18 av Matriser Tips ones(m,n) zeros(m,n) eye(m,n) ger en m x n-matris med ettor ger en m x n-matris med nollor ger en enhetsmatris av storlek m x n Tab-tangenten kan användas för att låta MATLAB ge förslag på hur ett ord ska fortsättas Pil-upp-tangenten kan användas för att gå bakåt i kommandolistan rand(m,n) ger en slumptalsmatris av storlek m x n Pil-ner-tangenten går framåt i kommandolistan size(a) det(a) inv(a) ger storleken av matrisen A ger determinanten av kvadratiska matrisen A ger inversen av kvadratiska matrisen A Tecken och pil MATLAB stegar bara igenom listan med de kommandon som börjar med tecknen Introduktion till MATLAB: sid 19 av Introduktion till MATLAB: sid 0 av
Mer information help-kommandot är en bra start. Testa också helpdesk och helpwin. MATLAB innehåller också ett antal demo. Officiell hemsida: www.mathworks.com Toolboxar Exted Symbolic Math (Maple V) Signal processing Neural Network Control System Optimization Statistics Chemometrics Introduktion till MATLAB: sid 1 av Introduktion till MATLAB: sid av