MATLAB Plotting With MATLAB 1 Two Dimensional Plots • The xy plot is the most commonly used plot by engineers • The independent variable is usually called x • The dependent variable is usually called y 2 Consider This xy Data time, sec Distance, Ft 0 0 2 0.33 4 4.13 6 6.29 8 6.85 10 11.19 12 13.19 14 13.96 16 16.33 18 18.17 Time is the independent variable and distance is the dependent variable 3 Define x and y and call the plot function time, sec Distance, Ft 0 0 1 0.33 3 4.13 5 6.29 7 6.85 9 11.19 11 13.19 13 13.96 15 16.33 17 18.17 You can use any variable name that is convenient for the dependent and independent variables 4 5 Engineers always add … • • • • Title X axis label, complete with units Y axis label, complete with units Often it is useful to add a grid 6 Creating Multiple Plots • MATLAB overwrites the figure window every time you request a new plot • To open a new figure window use the figure function – for example figure(2) 7 Plots With Multiple Lines • hold on – Freezes the current plot, so that an additional plot can be overlaid • When you use this approach the additional line is drawn in blue – the default drawing color 8 The first plot is drawn in blue 9 The hold on command freezes the plot The second line is also drawn in blue, on top of the original plot The second line is also drawn in blue, on top of the original plot 10 Plots With Multiple Lines • You can also create multiple lines on a single graph with one command • Using this approach each line defaults to a different color Each set of ordered pairs will produce a new line 11 Variations • If you use the plot command with a single matrix, MATLAB plots the values versus the index number • Usually this type of data is plotted on a bar graph • When plotted on an xy grid, it is often called a line graph 12 13 If you want to create multiple plots, all with the same x value you can • Use alternating sets of ordered pairs – plot(x,y1,x,y2,x,y3,x,y4) • Or group the y values into a matrix – z=[y1,y2,y3,y4] – plot(x,z) 14 Define x first Alternating sets of ordered pairs Matrix of Y values 15 The peaks(100) function creates a 100x100 array of values. Since this is a plot of a single variable, we get 100 different line plots 16 Plots of Complex Arrays • If the input to the plot command is a single array of complex numbers, MATLAB plots the real component on the x-axis and the imaginary component on the yaxis 17 Multiple arrays of complex numbers • If you try to use two arrays of complex numbers in the plot function, the imaginary components are ignored 18 19 Line, Color and Mark Style • You can change the appearance of your plots by selecting user defined – line styles – color – mark styles • Try using “help plot” for a list of available styles 20 Available choices Table 5. 2 Line, Mark and Color Options Line Type Indicator Point Type Indicato r Color Indicator solid - point . blue b dotted : circle o green g dash-dot -. x-mark x red r dashed -- plus + cyan c star * magenta m square s yellow y diamond d black k triangle down v triangle up ^ triangle left < triangle right > pentagram p hexagram h 21 Specify your choices in a string • For example • plot(x,y,':ok') – strings are identified with a tick mark – if you don’t specify style, a default is used • line style – none • mark style – none • color - blue 22 plot(x,y,':ok') • In this command – the : means use a dotted line – the o means use a circle to mark each point – the letter k indicates that the graph should be drawn in black 23 dotted line circles black 24 specify the drawing parameters for each line after the ordered pairs that define the line 25 Axis scaling • MATLAB automatically scales each plot to completely fill the graph • If you want to specify a different axis – use the axis command axis([xmin,xmax,ymin,ymax]) • Lets change the axes on the graph we just looked at 26 Use the axis function to override the automatic scaling 27 Annotating Your Plots • You can also add – legends – textbox • Of course you should always add – title – axis labels 28 29 Improving your labels You can use Greek letters in your labels by putting a backslash (\) before the name of the letter. For example: title(‘\alpha \beta \gamma’) creates the plot title αβγ To create a superscript use curly brackets title(‘x^{2}’) gives x2 30 Subplots • The subplot command allows you to subdivide the graphing window into a grid of m rows and n columns • subplot(m,n,p) rows columns location 31 subplot(2,2,1) 2 columns Peaks 2 1 5 0 -5 2 2 rows 0 y -2 3 -2 0 2 x 4 32 2 rows and 1 column 33 Other Types of 2-D Plots • • • • • • • Polar Plots Logarithmic Plots Bar Graphs Pie Charts Histograms X-Y graphs with 2 y axes Function Plots 34 Polar Plots • Some functions are easier to specify using polar coordinates than by using rectangular coordinates • For example the equation of a circle is – y=sin(x) in polar coordinates 35 36 Logarithmic Plots • A logarithmic scale (base 10) is convenient when – a variable ranges over many orders of magnitude, because the wide range of values can be graphed, without compressing the smaller values. – data varies exponentially. • Aplot – uses a linear scale on both axes • semilogy – uses a log10 scale on the y axis • semilogx – uses a log10 scale on the x axis • loglog – use a log10 scale on both axes 37 38 39 Bar Graphs and Pie Charts • MATLAB includes a whole family of bar graphs and pie charts – – – – – – bar(x) – vertical bar graph barh(x) – horizontal bar graph bar3(x) – 3-D vertical bar graph bar3h(x) – 3-D horizontal bar graph pie(x) – pie chart pie3(x) – 3-D pie chart 40 41 42 Histograms • A histogram is a plot showing the distribution of a set of values 43 X-Y Graphs with Two Y Axes • Scaling Depends on the largest value plotted • Its difficult to see how the blue line behaves, because the scale isn’t appropriate 44 The plotyy function allows you to use two scales on a single graph 45 Function Plots • Function plots allow you to use a function as input to a plot command, instead of a set of ordered pairs of xy values • fplot('sin(x)',[-2*pi,2*pi]) function input as a string range of the independent variable – in this case x 46 47 Three Dimensional Plotting • Line plots • Surface plots • Contour plots 48 Three Dimensional Line Plots • These plots require a set of order triples ( x-y-z values) as input The z-axis is labeled the same way the x and y axes are labeled 49 MATLAB uses a coordinate system consistent with the right hand rule 50 Surface Plots • Represent x-y-z data as a surface then use surf(z) 20 15 z-axis %surfplot diary surf.dat z=[1,2,3,4,5,6,7,8,9,10; 2,4,6,8,10,12,14,16,18,20; 3,4,5,6,7,8,9,10,11,12] x=linspace(1,50,10) y=linspace(500,1000,3) surf(z) xlabel('x-axis') ylabel('y-axis') zlabel('z-axis') diary 10 5 0 3 2.5 10 8 2 6 4 1.5 y-axis 1 2 0 x-axis 51 Bode Plots 52 A Resistor in the Laplace (S) Domain a a i I + + R1 v V 1K _ R2 1K _ Time b v = iR s b V = IR 53 An Inductor in the Laplace (s) Domain i + I0 = 0 I + L L1 v L2sL V L _ Time _ s 54 A Capacitor in the Laplace (s) Domain + i C C1 + V0 _ v - I + C11/sC v - Time s 55 Low Pass filter 56 Circuit Transfer Function H(s) R1 R1 + 2 + v1(t) _ ¼F 2 v2(t) C1 _ V2(s) V1(s) 4/s V2(s) 2 = 2 + 4/s C1 _ 4/s = H(s) = + + v1(s) _ S+2 57 MATLAB Software – Bode Plot Template H(s) = 2 / (s + 2) n=[0 2]; d=[1 2]; Start at 10-1 Stop at 102 generates 200 points bode (n,d); between 100 & 104 w=logspace (-1, 2, 200); [mag,pha]=bode (n,d,w); semilogx (w,20*log10 (mag));grid title(‘Bode Plot’) xlabel (‘w (Rad/sec)’) ylabel(‘Decibels (dB)’) 58 Bode Plot Bode Plot 0 -5 Decibels (db) -10 -15 -20 -25 -30 -35 -1 10 0 1 10 10 2 10 w (Rad/sec) 59 Bode Plot Bode Plot 10 5 Decibels (dB) 0 X: 2.026 Y: -3.066 -5 -10 -15 -20 -1 10 0 1 10 10 2 10 w(Rad/sec) 60 61 R1 + R1 50K C1 Vi _ 0.1uF + + 50K C1 Vo Vi _ _ + Vo 1/sC = 1/0.1s _ 1/RC = 1 / (50 x 103)(0.1 x 10-6) = 200 62 MATLAB Software For Semi-log Paper n=[1]; Start at 10 d=[1]; Stop at 10 bode (n,d); generates 200 points w=logspace (0, 4, 200); between 10 & 10 [mag,pha]=bode (n,d,w); semilogx (w,20*log10 (mag));grid title(‘Bode Plot’) xlabel (‘w (Rad/sec)’) xlabel(‘Decibels (dB)’) 0 4 0 4 63 Semi-log Paper Bode Plot 1 0.8 0.6 Decibels (db) 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 10 1 10 2 10 w (Rad/sec) 3 10 4 10 64 65