<< Chapter < Page | Chapter >> Page > |
The goal of this lab is to provide exercises that will help you get started learning MATLAB. You will learn about the help function, vectors, complex numbers, simple math operations, and 2-D plots. You may find it useful to try some of the built-in demos in Matlab. Type
demo
to see the choices. In particular, look at the demo on "Basic matrix operations" (under "Mathematics") and on "2-D" plots (under "Graphics"). We will also look at script files in MATLAB, which we will refer to as M-files and have the file extension
*.m
.
Start MATLAB by clicking on it in the start menu. Once MATLAB is running you will see a screen similar to Figure 1. The command window, (A), is where you can enter commands. The current working directory, (B), displays the directory that MATLAB will look first for any commands. For example, if you made a new MATLAB function called
myfunc.m
, then this will need to be placed in the current working directory. You can change the working directory by typing it in the box, clicking the "..." button to browse to a folder, or typing
cd [directory name]
(i.e.
cd 'H:\ee235\lab0\'
), which is similar to the DOS/Linux cd command).
Current Directory
. A history of your commands is shown in (D). If you find that you do not need some of these windows open you can close them by clicking on the small x in that section of the window.
matlab
at the command prompt will run MATLAB in X-Windows (warning, MATLAB in X-Windows can be slow when connecting off campus). To run MATLAB without X-Windows type
matlab -nodisplay
. You can also run MATLAB using the current terminal for commands and use X-Windows for everything else (like figures) by typing
matlab -nodesktop
.MATLAB works with matrices and therefore treats all variables as a matrix. To enter the matrix
$$x=\left(\begin{array}{ccc}3& 1& 5\\ 6& 4& 1\end{array}\right)$$ type the command
x = [3 1 5; 6 4 1]
. We can represent an array with a vector, which is a special case of a matrix. A vector can be entered in by typing
y = [1 2 3]
. Now try entering
z = [1 2 3]'
. Is the output what you expect?
help
gives you a list of all help topics. Typing
help<topicname>
gives help on a specific MATLAB function. For example, use
help plot
to learn about the plot command.
whos
lists all variablesclear
clears all variablesx * y'
x' * yx .* y
Be sure you understand the differences between each of these and you know what the
'
,
*
, and
.*
operators do.The Matlab command
plot
allows you to graphically display vector data (in our case here, the two signals). For example, if you had the variables
t
for time, and
y
for the signal, typing the command
plot(t, y);
will display a plot of
t
vs.
y
. See
help plot
for more information.
Annotating your plots is very IMPORTANT! Here are a few annotation commands.
title('Here is a title');
- Adds the text "Here is a title" to the top of the plot.xlabel('Control Voltage (mV)');
- Adds text to the X-axis.ylabel('Current (mA)');
- Adds text to the Y-axis.grid on;
- Adds a grid to the plot.In order to display multiple plots in one window you must use the
subplot
command. This command takes three arguments,
subplot(m, n, p)
. The first two breaks the window into a m by n matrix of smaller plot windows. The third argument, p, selects which plot is active.
For example, if we have three signals x, y, and z, that we want to plot against time, t, then we can use the subplot command to produce a single window with three plots stacked on top of each other.
subplot(3,1,1);
plot(t,x);subplot(3,1,2);
plot(t,y);subplot(3,1,3);
plot(t,z);
See
help subplot
and
help plot
for much more information.
t = -10:0.1:10;
xo = t .* exp(-abs(t));plot(t, xo); grid;
The first command defines an array with time values having an 0.1 increment. The ";"
is used to suppress printout of the arrays (which are large), and the
"grid"
command
makes the plot easier to read. Now create the signals:
subplot(3,1,1);
plot(t,xo);subplot(3,1,2);
plot(t,xe);subplot(3,1,3);
plot(t,x);
Note that
${x}_{o}(t)$ and
${x}_{e}(t)$ are the odd and even components, respectively, of
$x(t)=te^{-t}u(t)$ i
as an imaginary number. Try entering
sqrt(-1)
into MATLAB, does the result make sense?i
instead of
j
by default. Electrical Engineers prefer using
j
however, and MATLAB will recognize that as well. Try entering
i+j
, does this make sense.
i
and
j
as variables to prevent confusion.abs()
,
angle()
,
real()
,
imag()
, respectively). Is the phase in radians
or degrees?load handel;
plot(linspace(0,9,73113),y);sound(y);
clear
command in MATLAB to clear all of the variblesScripts are
m-files
files that contain a sequence of commands that are executed exactly as if they were manually typed into the MATLAB console. Script files are useful for writing things in MATLAB that you want to save and run later. You can enter all the commands into a script file that you can run at a later time, and have the ability to go back and edit it later.
You need to use a text editor to create script files, e.g.
Notepad
on the PC's (
pico
,
emacs
, or
vi
on Linux machines). MATLAB also has an internal editor that you can start by clicking on a
.m
file within MATLAB's file browser. All are easy to learn and will produce text files that MATLAB can read.
Click here to download the
dampedCosine.m
script and be sure to save it with that name to follow the instructions here exactly. It is very important that script filenames end in
.m
. Be sure that MATLAB's working directory is set to the location of where you saved the script file. Type dampedCosine at the MATLAB prompt. Look at the m-file in a text editor and verify that you get the plot predicted in the comment field of the script.
%
character marks the rest of the line as a comment.Now we are going to edit the
dampedCosine.m
file to create our own script file. At the top of the file, you will see the following commands
diary 'your_name_Lab1.txt'
disp('NAME: your name')disp('SECTION:your section')
yourName_dampedCosine.m
subplot
and
plot
. Save this plot as
yourName_dampedCosine.fig
.Download and run compexp.m , which includes a 3-D plot of a complex exponential, $y(t)$ , as well as 2-D magnitude/phase and real/imaginary plots. You need 2 2-D plots to have the same information as the 3-D plot. How would you change the script to make the oscillation frequency lower by half? How would you change the script to make the decay faster? Show the TA your plots.
Notification Switch
Would you like to follow the 'Continuous time linear systems laboratory (ee 235)' conversation and receive update notifications?