%% Lesson 5a: Plotting % % We are going to go through several plotting schemes, and explore how you % can customize plotting. We would go through 2D plotting, surface % plotting, subplot, stem plot and 3D plotting % % In this file the `command syntax` style of functions will be used when % possible, just to get you familiar with the style. clear; clc; close all; %% 2D plotting: line graphs % In general, always annotate your plots appropriately! Use a title, % axis labels, legends, etc. as necessary. Set appropriate bounds, % appropriate scaling (e.g., linear vs. logarithmic), and the correct % type of plot. We'll start simple with line plots. x = -10:0.1:10; y = x.^3; y2 = x.^2; hold on; % plotting more than 1 plot on 1 figure rather than overwriting plot(x, y, 'DisplayName', 'x^3'); plot(x, y2, 'DisplayName', 'x^2'); hold off; xlabel 'x axis'; ylabel 'y axis'; title 'Example 1'; xlim([-10 10]); ylim([-10 10]); % axis([-10 10 -10 10]); grid on; legend show; % 'DisplayName does this %% Example 2: Plotting sine and cosine t = 0:.1:10; d1 = sin(t); d2 = cos(t); figure; % plot(t, [d1.' d2.']); % plot(t, d1, t, d2); hold on; plot(t, d1); plot(t, d2); hold off; title 'Trig Functions'; % We can use some LaTeX-like symbols like \mu, \beta, \pi, \leq, \infty. % For full LaTeX support use the `Interpreter: latex` option xlabel 'time (\mu)s'; ylabel voltage; legend sin cos; % Save to file; gcf() is "get current figure" exportgraphics(gcf(), "sample_plot.png"); %% More plotting options % Legends, axis ticks (and labels), LaTeX interpreter figure; % Options for changing line pattern and color. % Don't need `hold on`/`hold off` if multiple lines plotted with a single % `plot` function. plot(t, d1, 'b-.', t, d2, 'rp'); title 'Trig Functions'; xlabel 'time ($\mu$s)' Interpreter latex ylabel voltage; legend('sin', 'cos'); xticks(0:pi/2:10); xticklabels({'0', '\pi/2', '\pi', '3\pi/2', '2\pi', '5\pi/2', '3\pi'}); % Many other options availible for plotting. Check the documentation or % search online for options. %% Subplots % Subplots exist for stylistic purposes. Let's say you have a signal and % you want to plot the magnitude and phase of the signal itself. It would % make more sense if the magnitude and phase plots exist in the same % figure. There are several examples fo subplot below to explain how it % works. Note that linear indexing of plots is different from normal linear % indexing. figure; subplot(2,2,1); % subplot(# of rows, # of columns, index) plot(t,d1); hold on; plot(t, d2); title 'Normal plot'; subplot(2, 2, 2); % index runs down rows, not columns! plot(t, d1, 'b-.', t, d2, 'rp'); title 'Customized plot'; %% Stem plots % stem plots are particularly useful when you are representing digital % signals, hence it is good (and necessary) to learn them too! % subplot(2,2,[3 4]) % takes up two slots subplot(2, 1, 2); hold on; stem(t, d1); stem(t, d2); hold off; title 'Stem plots'; sgtitle Subplots; %% Tiling -- like subplots but newer figure; tiledlayout(2, 2); nexttile; plot(t, d1); nexttile; plot(t, d2); %% A 3-D parametric function % A helix curve t = linspace(0,10*pi); figure; plot3(sin(t), cos(t), t); xlabel sin(t); ylabel cos(t); zlabel t; text(0, 0, 0, 'origin'); grid on; title Helix; %% Surface plot % A shaded look for 2-D functions % % $f(x) = x\exp -(x^2+y^2)$ a1 = -2:0.25:2; b1 = a1; [A1, B1] = meshgrid(a1); F = A1.*exp(-A1.^2-B1.^2); figure; surf(A1,B1,F); %% Mesh plot % A wireframe look for 2-D functions figure; mesh(A1,B1,F);