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) %en ny vektor x y2 = 40*sin(x2); %en ny vektor y plot(x,y,x2,y2); %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: Denna tabell finns även på sidan 94 i kursboken. 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 ^ Uppåtpekande triangel y Gul v Nedåtpekande triangel r Röd Denna tabell finns även på sidan 94 i kursboken.
Flera kurvor i samma plott (metod två) h1 = plot(x1,y1); %plotter första kurvan %och ger den ”handtaget” h1 hold on %håller kvar tidigare plott h2 = plot(x2,y2); %plottar andra kurvan (h2) hold off %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 %döljer axlar axis on %ritar ut axlar axis equal %samma skala på x och y axeln axis([x1 x2 y1 y2]) %Skalar axlarna manuellt xlim([x1 x2]) %x-axel från x1 till x2 ylim([y1 y2]) %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’) %Överskrift för aktuell plott xlabel(’text’) %Etikett för x-axeln ylabel(’text’) %Etikett för y-axeln text(x,y,’text’) %Placera text vid %koordinaterna x,y legend(’text’) %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); %Definera x,y och z utifrån t y = cos(10*t); z = t; plot3(x,y,z) %plotta 3D-kurva
view() veiw(2) %Planvy veiw(3) %3D-vy view(az,el) %ändrar vyn %till angivna %värden på %”azimuth” och %”elevation” Vinklar anges i grader
Exempel (finns även på sidan 106 i boken) Plotta funktionen 𝑧=1+ 𝑥𝑒 − 𝑥 2 − 𝑦 2 som en yta i 3D. % intervall −2≤𝑥≤2, −2≤𝑦≤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