KPP053, HT2016 MATLAB, Föreläsning 3 Plotter och diagram Läsa och skriva data till fil
2D-plott (igen) x = linspace(-10,10); %godtyckligt intervall % punkt framför * och ^ ger elmentvis operation y = x.^2 + 4*x 10 plot(x,y);
Flera kurvor i samma plott (metod ett) x2 = linspace(-8,8) y2 = 40*sin(x2); plot(x,y,x2,y2); %en ny vektor x %en ny vektor y %plottar båda kurvorna Man kan även ange en teckensträng efter varje vektorpar som beskriver hur kurvan skall se ut. Fler formatsträngar på nästa sida. plot(x,y, -- black,x2,y2, red ) Till skillnad från Octave och MATLAB accepterar FreeMAT inte mellanslag och hela färgnamnet i täckensträngarna, så där blir det: plot(x,y, --k,x2,y2, r )
Formatsträngar: Punkttyper Linjetyper. Punkt - heldragen linje * Asterisk -- streckad linje square Fyrkant -. punkt-streckad linje diamond Ruta : prickad linje hexagram Sexuddig stjärna (ej i Freemat) Färgtyper o Ringar g Grön + Plustecken m Magenta x Kryss b Blå < Vänsterpekande triangel c Cyan > Högerpekande triangel k Svart Denna tabell finns även på sidan 94 i kursboken. ^ Uppåtpekande triangel y Gul v Nedåtpekande triangel r Röd
Flera kurvor i samma plott (metod två) h1 = plot(x1,y1); %plotter första kurvan %och ger den handtaget h1 hold on h2 = plot(x2,y2); hold off %håller kvar tidigare plott %plottar andra kurvan (h2) %slår av hold-funktionen Med denna metod kan man ge varje kurva ett eget handtag (underlättar om man vill ha mer kontroll över kurvans utseende).
Grafikhandtag get(h1) %Ger en lista på egenskaperna %för kurvan h1 Funktionen get är inte helt implementerad i FreeMAT ännu, så enklaste sättet att få en lista på egenskaper är http://freemat.sourceforge.net/help/handle_lineproperties.html Kurvornas utseende kan sedan modifieras med funktionen set, Ex: set(h1, LineStyle, -- ) set(h1, color, black ) Set(h2, LineWidth,2)
Fler färger Förutom att anges med korta eller långa strängar (t.ex. k eller black ) kan färger även anges som en vektor med tre värden från 0 till 1 för röd, blå och grön.
Modifiera axlar axis off axis on axis equal %döljer axlar %ritar ut axlar %samma skala på x och y axeln axis([x1 x2 y1 y2]) xlim([x1 x2]) ylim([y1 y2]) %Skalar axlarna manuellt %x-axel från x1 till x2 %y-axel från y1 till y2 get(gca) %ger en lista med egenskaper för %axlarna i den aktiva plotten För egenskaper i FreeMat: http://freemat.sourceforge.net/help/handle_axisproperties.html set(gca,s,a) %ändrar egenskapen s hos axlarna till %värdet a. s är en sträng, a varierar beroende på %vilken egenskap man vill modifiera.
Text grafer title( text ) xlabel( text ) ylabel( text ) text(x,y, text ) legend( text ) %Överskrift för aktuell plott %Etikett för x-axeln %Etikett för y-axeln %Placera text vid %koordinaterna x,y %Etiketter för kurvor I matlab eller octave kan symbolen \ följt av ett kodord användas för att infoga specialtecken, t.ex. grekiska bokstäver i täckensträngar som skall printas i en graf. Se sidan 100 i kursboken för en lista på kodord.
Flera grafer i samma fönster Kommandot subplot(m,n,p) delar grafikfönstret så att man får mxn stycken mindre grafer. p talar om vilken ruta man för tillfället vill plotta i. När man vill flytta pekaren till nästa ruta skriver man samma kommando igen, men byter värdet på p Om man vill slå ihop några rutor till en större ruta kan man ange ett eller flera intervall som pekare
Plotta en (parametrisk) 3D-kurva. t = linspace(0,2); %Skapa parametern t x = sin(10*t); y = cos(10*t); z = t; %Definera x,y och z utifrån t plot3(x,y,z) %plotta 3D-kurva
view() veiw(2) veiw(3) %Planvy %3D-vy view(az,el) Vinklar anges i grader %ändrar vyn %till angivna %värden på % azimuth och % elevation
Exempel (finns även på sidan 106 i boken) Plotta funktionen z = 1 + xe x2 y 2 som en yta i 3D. % intervall 2 x 2, 2 y 2: x = linspace(-2,2,20); %skapar x och y vektor y = x; %över aktuellt intervall [X,Y] = meshgrid(x,y) %skapar matriserna X och %Y över intervallen
Exempel (finns även på sidan 106 i boken) % Skapa matrisen Z inehållande z-koordinater: Z = 1 +X.*exp(-X.^2 Y.^2); mesh(x,y,z); %plottar yta, färgsätter %utifrån värden i matrisen Z mesh(x,y,z,c); %plottar yta, färgsätter %utifrån värden i matrisen C
Colormaps Understrukna färgkartor finns även i FreeMat
Lagring av variabler i en fil save filnamn.mat %sparar alla variabler i den %binära filen filnamn.mat load filnamn.mat %läser in all sparade variabler %från filen filnamn.mat load filnamn.mat x y %läser endast in %variablerna x och y från %filen