matlab has a wide
spectrum of plotting tools. The most popular and powerful one for 2-D
plotting is function plot.
For a plot, it is necessary to define the independent variable that
you are graphing with respect to.
The independent and dependent variables can be defined either
before using the plot function or within the plot function itself
and must be matrices/vectors of equal sizes.
A typical code for a simple plot function
in matlab is
plot(ind_var, dep_var) , where ind_var and dep_var are vectors of
the independent and dependent variables correspondingly. For
instance, the command
plot(1:10, [1, 1.9, 2.7, 3.4, 4.0, 4.5, 4.9, 5.2, 5.4, 5.5])
provides a plot of discrete set of points on the plane.
We give examples of codes to display two graphs in two different
figures.
Let the independent variable be x and the range be interval [0 , 2π] and we want to plot the function \( y = 2\,\sin 3x - 2\,\cos x . \)
The Octave command sequence is
x=linspace(0, 2*pi); % define and calculate a row vector of an independent variable x
y1 = 2*sin(3*x)-2*cos(x); % defining and calculating y1 as 2sin3x - 2cosx
y2 = sin(x) - cos(3*x)/3; % defining and calculating y2 as sinx - (cos3x)/3
figure % opens new figure
plot(x,y1) % plots the first graph of x-y1
figure % opens second new figure
plot(x,y2) % plots the second graph of x-y2
Next we give an example of code to display multiple plots on the same figure
x = linspace(0, 2*pi); % defining and calculating a row vector of an independent variable x
y1 = 2*sin(3*x)-2*cos(x); % defining and calculating y1 as as 2sin3x - 2cosx
y2 = sin(x) - cos(3*x)/3; % defining and calculating y2 as sinx - (cos3x)/3
figure % opens new figure
plot(x,y1,x,y2) % plots graphs of y1(x) and y2(x)
x = linspace(0, 2*pi);
y = 2*sin(3*x)-2*cos(x);
title('Default view')
xlabel('#1')
figure
plot(x, y)
axis tight
title('axis tight')
xlabel('#2')
figure
plot(x, y)
axis equal
title('axis equal')
xlabel('#3')
figure
plot(x, y)
axis equal, axis tight
title('axis equal, axis tight')
xlabel('#4')
Result is graph #1 on figure below. It is optimal for the axes' ticks.
To exclude empty space we use "axis tight" after plot command (#2).
Sometimes it is important to show a curve when aspect ratio is 1.
Then use "axis equal" (#3) and even ''axis equal, axis tight'' (#4).
The above code is not recommended for practical usage, so we present another version:
function plotting
x=linspace(0, 2*pi); % compute an argument
y=2*sin(3*x)-2*cos(x); % compute a function of argument x
p1('Default view','#1',x,y) % plotting of the 1st graph
p1('axis tight','#2',x,y) % plotting of the 2nd graph
axis tight % set axis to tight (graph #2)
p1('axis equal','#3',x,y) % plotting the 3rd graph
axis equal % set axis to be equal (graph #3)
p1('axis equal, axis tight','#4',x,y) % plotting the 4th graph
axis equal, axis tight % set axis to be equal and tight (graph #4)
function p1(a,b,x,y) % plotting function
figure % new figure
plot(x,y) % plotting graph
title(a) % plotting a title
xlabel(b) % plotting a label for abscissa
I. Displaying multiple plots
We give examples of codes to display two graphs in two different figures
x=1:100; % making an array of x from 1 to 100
y1=x.^2; % defining and calculating y1 as x.^2 . NOTE: .^ opertator is used for element wise array manupulation
y2=(x.^3)/100; % defining and calculating y2 as (x.^3)/100
figure % opens new figure
plot(x,y1) % plots the first graph of x-y1
figure % opens second new figure
plot(x,y2) % plots the second graph of x-y2
|
|
There is a special subroutine multigraf.m that allows one to place up to six Matlab figures on one page. THis will give you a window into which you can insert several figures produced by dfield.
Next we give examples of codes to display multiple plots on the same figure
x=1:100; % making an array of x from 1 to 100
y1=x.^2; % defining and calculating y1 as x.^2 . NOTE: .^ opertator is used for element wise array manupulation
y2=(x.^3)/100; % defining and calculating y2 as (x.^3)/100
figure % opens new figure
plot(x,y1) % plots the first graph of x-y1
hold on
plot(x,y2) % plots the second graph of x-y2
The code for a simple plot function in matlab is plot(independent variable, dependent variable).
The independent and dependent variables can be defined either before using the plot function or within the plot
function itself and must be matrices of equal sizes.
Therefore,
plot([1, 2, 3, 4], [1, 2, 3, 4])
will produce the same graph as
x = [1, 2, 3, 4];
y = [1, 2, 3, 4];
plot(x, y)
Now we plot a trigonometric function:
x = linspace(0, 2*pi);
plot(x, 2*sin(3*x)-2*cos(x))
In the above script, the independent variable is x with a range from 0 to 2π. The linspace function produces a row vector of 100 evenly spaced points between 0 and 2π.
To plot multiple graphs in different windows, use the figure command between plot functions. For multiple plots in the same window, use the hold on command between plot functions or use commas between sets of independent and dependent variables within the plot function.
t1 = linspace(0, pi);
t2 = linspace(pi, 2*pi);
plot(cos(t1), sin(t1), 'k', cos(t2), sin(t2), '--k', 'LineWidth', 2)
The axis command can be used to restrict the horizontal and/or vertical range as shown in the following example.
x = linspace(-0.5, 0.5);
plot(x, exp(10*x), 'k', 'LineWidth', 2)
xlabel('x');
ylabel('exp(10*x)');
plot(x, exp(10*x), 'k', 'LineWidth', 2)
xlabel('x');
ylabel('exp(10*x)')
axis([-0.5, 0.5, 0, 10]);
The simplest way to plot a downward sine function is to translate the entire function by ±π along the x-axis.
x = -5:0.1:5;
plot(x, sin(x + pi))
Plotting data in Matlab is simple. For example, to plot two functions
sin x and cos x on the interval 0<x<10, type in:
t = 0:.1:10;
x=cos(t); y=sin(2*t);
plot(t,x,t,y)
matlab lets you edit and annotate a graph directly from the window. For example, you can go to Tools> Edit Plot, then double-click the plot. A menu should open up that will allow you to add x and y
axis labels, change the range of the x-y axes; add a title to the
plot, and so on.
You can change axis label fonts, the line thickness and color, the background, and so on – usually by double-clicking what you want to change and then using the pop-up editor. You can export figures in many different formats from the File> Save As menu – and you can also print your plot directly. Play with the figure for yourself to see what you can do. Here are some basic commands and their functions:
>> xlabel % input your horizontal axis (abscissa) title here
>> ylabel % input your vertical axis (ordinate) title here
>> title % input your title here
>> legent % "my first curve title", "my second curve title" , and so on
>> grid on % turns grid lines on
>> figure % opens the plot in a new figure
>> axis off % to turn of the axis
>> axis on to turn axis back (they are on by default)
All stylistic features of graphs can be edited in the graph itself by clicking on the insert tab on the graph window:
To plot multiple lines on the same plot you can use
clear all
for i=1:101 t(i) = 2*pi*(i-1)/100; end
x = cos(t);
plot(t,x)
hold on
y = sin(2*t);
plot(x,y)
Alternatively, you can use
clear all
for i=1:101 t(i) = 2*pi*(i-1)/100; end
x(1,:) = cos(t);
x(2,:) = sin(2*t);
x(3,:) = sin(3*t);
plot(t,x)
>>>>>>>>>>>>>>> am33/matlab/multiple.jpg
Here, x is a matrix. The notation x(1,:) fills the first row of x,
x(2,:) fills the second, and so on. The colon : ensures that the
number of columns is equal to the number of terms in the vector x. If
you prefer, you could accomplish the same calculation in a loop:
for i=1:length(x) y(1,i) = sin(x(i)); y(2,i) = sin(2*x(i)); y(3,i) = sin(3*x(i)); end
plot(x,y)
Notice that when you make a new plot, it always wipes out the old
one. If you want to create a new plot without over-writing old ones, you can use
The ‘figure’ command will open a new window and will assign a new
number to it (in this case, figure 2). If you want to go back and
re-plot an earlier figure you can use
If you like, you can display multiple plots in the same figure, by
typing
newaxes = axes;
plot(x,y)
The new plot appears over the top of the old one, but you can drag it away by clicking on the arrow tool
and then clicking on any axis or border of new plot. You can also re-size the plots in the figure window
to display them side by side. The statement ‘newaxes = axes’ gives a name (or ‘handle’) to the new axes,
so you can select them again later. For example, if you were to create a third set of axes
yetmoreaxes = axes;
plot(x,y)
you can then go back and re-plot `newaxes’ by typing
Doing parametric plots is easy. For example, try
for i=1:101 t(i) = 2*pi*(i-1)/100; end
x = sin(t); y = cos(t);
plot(x,y)
.... circle.fig
matlab has vast numbers of different 2D and 3D plots. For example, to draw a filled contour plot of
the function z = sin(2 x) sin(2 y) for 0 < x <1, 0 < y <1, you can use polar graphs. For example, after executing the following script
for i=1:101
theta(i) = -pi + 2*pi*(i-1)/100;
rho(i) = 2*sin(5*theta(i));
end
figure
polar(theta,rho)
you get
.... five.jpg
for i =1:51 x(i) = (i-1)/50; y(i)=x(i); end
z = transpose(sin(2*pi*y))*sin(2*pi*x);
figure
contourf(x,y,z)
The first two lines of this sequence should be familiar: they create row vectors of equally spaced points.
The third needs some explanation – this operation constructs a matrix z, whose rows and columns satisfy
z(i,j) = sin(2*pi*y(i)) * sin(2*pi*x(j)) for each value of x(i) and y(j).
If you like, you can change the number of contour levels
>>contourf(x,y,z,15)
.... contour15.jpg
You can also plot this data as a 3D surface using
>> surface(x,y,z)
... survace.jpg
The result will look a bit strange, but you can click on the ‘rotation 3D’ button (the little box with a
circular arrow around it ) near the top of the figure window, and then rotate the view in the figure with
your mouse to make it look more sensible.
.... surface2.jpg