Introduction To: Working With Arrays, and Two-Dimensional Plotting
Introduction To: Working With Arrays, and Two-Dimensional Plotting
Introduction To: Working With Arrays, and Two-Dimensional Plotting
Lab #1:
Introduction to MATLAB Part 1
Working With Arrays, and Two-Dimensional Plotting
Course ECE221H1S
Lab #1
Winter 2014
INTRODUCTION
One of the purposes of the computer labs in this course is to allow you to learn how to use MATLAB, which is a very powerful tool for mathematical analysis. It is widely used in both industry and academia due to its simple programming environment and flexibility. Through these computer lab experiences you will learn how to: 1. Use MATLABs built-in functions to perform basic computations using real and complex numbers, 2. Perform basic computations using vectors and matrices, 3. Create two-dimensional and three-dimensional plots of functions, with proper labeling and formatting, 4. Create and run scripts and functions, 5. Work with variables and save and load data and figure files, 6. Use MATLAB to solve electric and magnetic field problems numerically rather than analytically. For example, a. Calculating the electric field due to a continuous charge distribution, and b. Visualizing electric and magnetic fields through two- and three-dimensional plots, 7. Use MATLAB for many other purposes, which might be helpful in your other courses. For example, a. Determining graphical solutions of transcendental equations, b. Creating Bode plots to visualize the frequency response of an electric circuit, c. Visualizing the frequency spectrum of a time-domain signal using stem plots, and d. Calculating discrete-time Fast Fourier Transforms (FFTs). This introduction briefly describes the essentials of the MATLAB programming environment and language. The first two labs in this course will help you to understand the fundamentals of how to use MATLAB. Getting Started The MATLAB tutorial and the computer labs will be completed in the facultys computer labs. You do not need to purchase a copy of MATLAB, as this program is available in both the ECE computer labs (Windows BA3128, Linux GB251 and SF2102) and the ECF computer labs (Windows WB316, GB144, GB150, and SF1106, Linux SF1106, SF1012, and SF1013). If you have trouble logging into your account on the ECE Workstation Labs machines (GB251 and SF2102), please check with Tim Trant in GB249. The current version of MATLAB on the facultys machines is R2013a If you do have access to MATLAB elsewhere, you should be able to complete these labs with any basic version of MATLAB 7 (R14, R2006, R2007, R2008, etc.). As far as we are concerned, there is little difference in these versions, i.e., R2011a is very much the same as R2010, R2009, etc. As well, these labs do not require any of the special toolboxes for MATLAB, so the basic version is sufficient. To run MATLAB in the ECE Workstation Labs (Linux GB251 and SF2102), open a terminal window and type matlab. In the ECF computer labs, MATLAB is accessible through the Start menu (Windows), or under the ECF Applications menu (Linux). MATLAB can also be accessed off-campus through ECFs Remote Desktop at: https://ssl.ecf.utoronto.ca/ecf/services/rd
University of Toronto 2 ECE Department
Course ECE221H1S
Lab #1
Winter 2014
University of Toronto
Course ECE221H1S
Lab #1
Winter 2014
Command window. The current value of any saved variable is also displayed in this window if its name is entered at a prompt. Finally, the Command History window, at the lower right in the default desktop, contains a log of commands that have been executed within the Command window. This is a convenient feature for tracking when developing or debugging programs or to confirm that commands were executed in a particular sequence during a multi-step calculation from the command line. The Help Window Separate from the main desktop layout is a Help desktop with its own layout. This launched by selecting Help Product Help from the Help pull down menu. This Help right side which contains links to help with functions, help with graphics, and documentation. The left side has various tabs that can be brought to the foreground for table of contents, by indexed keywords, or by a search on a particular string. Help can also be accessed by typing help at the command line prompt. The Figure Window There is a Figure window that floats independently from the main desktop. If not already present, it is launched when command execution results in graphical output, such as the figure command. From the Edit menu on the main toolbar, there are selections for editing figure properties, axis properties, and properties of objects within figures. On the Tools menu of the main toolbar there are selections for further manipulation such as zooming and perspective rotation. MATLAB File Types There are a variety of file types in MATLAB, but we will focus on the three which have the extensions: ".m", ".mat" and ".fig". Type help fileformats for more detailed information. .m: The MATLAB program files. These contain all the MATLAB code that is needed to run a particular script or function. These are standard ASCII text files and thus can be edited in any basic text editor (MATLAB has such an editor available.) These are discussed further in a later module. utility can be desktop has a tutorial type navigating by
.mat: These are binary data files which are created when you save data in MATLAB by running the save command. The data contained within a .mat file can be loaded into MATLAB by running the load command (discussed further in a later module.) .fig: These are binary figure files that can be loaded into MATLAB as a new figure (discussed further in a later module.) Running a program To run a program, the working directory from which the files are to be used must be selected in the Current Directory bar near the top of the screen (also shown in the Current Folder window located in the left-hand corner). The directory should contain the files that are needed to run the program, including the .m file. Note that .m files may be also run by typing the file name without its extension at the command line.
University of Toronto 4 ECE Department
Course ECE221H1S
Lab #1
Winter 2014
Reference Information For more details about the MATLAB programming environment and the description of MATLAB commands it is easiest to consult the built-in help feature. In addition, the following online resources may be helpful: a) Online MATLAB tutorials at Mathworks.com (producer of MATLAB): http://www.mathworks.com/academia/student_center/tutorials/launchpad.html This contains a wide variety of videos, examples, interactive tutorials, and links to external resources. b) The official MATLAB Primer: http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf c) The official online documentation: http://www.mathworks.com/help/matlab/index.html
University of Toronto
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
LAB #1
The purpose of this lab is to allow you to become comfortable with the basic interface and syntax of MATLAB. In this lab, you will learn how to define and manipulate vectors and arrays, as well as how to generate a number of different kinds of two-dimensional plots.
PREPARATION - Individual
Required to do before you come into the lab
1) Carefully read through the Introduction notes above, and the in-lab exercises described below. 2) Watch the 5 minute Getting Started with MATLAB video demonstration which is available at: a. http://www.mathworks.com/videos/getting-started-with-matlab-68985.html, or b. If you are running MATLAB, it can be accessed by selecting Demos from the MATLAB Start button, . 3) Watch the video demonstration Using Basic Plotting Functions (5:30), available at: a. http://www.mathworks.com/videos/using-basic-plotting-functions-69018.html, or b. If you are running MATLAB, it can be accessed by selecting Demos from the MATLAB Start button, .
University of Toronto
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
The result of the last performed computation is ascribed to the variable ans, which is an example of a MATLAB built-in variable. It can be used in the next command. For instance, >> 14/4 ans = 3.5000 >> ans *2 ans = 7.0000 You can also define your own variables. Type in the following commands to create the variables a and b: >> a = 14/4 a = 3.5000 >> b = a+1 b = 4.5000 The command whos displays a list of variables, their sizes, and their data class. Try it now. The entry of very large and very small numbers can be simplified using scientific notation. For example, enter the numbers 0 = 0.000000000008854 = 8.854 x 10-12, and 0 = 4 x 10-7, by typing: >> epsilon0 = 8.854e-12 and >> mu0 = 4*pi*1e-7
University of Toronto
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
2. When the command is followed by a semicolon ;, the output is suppressed. Check the difference between the following expressions: >> 3 + 7.5 >> 3 + 7.5; % without semicolon % with semicolon
Note that the last stored answer can always be viewed by typing ans in the command window. Also note that the text following the % sign is ignored by MATLAB. It is useful for inserting comments, explanations or reminders.
Try this example of how to specify a matrix in MATLAB: >> A2 1 -1 A2 = [1:4; -1:2:5] = 2 3 4 1 3 5
Notice how the colon ':' is used to specify a range of numbers as elements. 1:4 simply means from 1 to 4 in steps of 1; -1:2:5 means from -1 to 5 in increments of 2. Transposing a matrix can be achieved with a simple command, where transposing interchanges rows with the corresponding columns, as shown in the following example: >> A2 1 -1 A2 = 2 3 4 1 3 5 % transpose of A2
>> A2 ans = 1 -1 2 1 3 3 4 5
University of Toronto
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
>> [1 2;3 4]*[2 0;1 3] ans = 4 6 10 12 While the dot product, or element by element multiplication, is done by using the .* command. For example, try >> [1 2;3 4].*[2 0;1 3] ans = 2 0 3 12 Try these examples: Expression A2*A2 Result from MATLAB
Standard matrix multiplication is done with the * command, so the calculation given by: 1 2 2 0 3 4 1 3 would be executed in MATLAB by typing:
A2.*A2
A2.*A2
University of Toronto
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
Right after the above example, try >> z^2 >> z.^2 What is the difference between the two results?
Next type in >> z = x + y >> z^2 % does this work? >> z.^2 % what about this? What do you get as a result now? Why does one work and not the other? The size command may help you answer these questions.
Specific elements of a matrix can also be accessed. For example, to display the 2nd element of the first row of the matrix A (as defined above), you would type: >> A(1,2) ans = 2 and entire rows, or columns, are displayed through the use of the colon operator: >> A(1,:) ans = 1 2 3 >> A(:,2) ans = 2 5 8 Partial rows, or columns, can be displayed by limiting the range: >> A(1:2,2) ans = 2 5 We can also make use of the colon operator to assign values to a part of a matrix: >> A(1:2,1) = [1;1] A = 1 2 3 1 5 6 7 8 9
University of Toronto 10 ECE Department
Course ECE221H1S
Lab #1
Winter 2014
Click on Help in the top menu and search for exp, for, and linspace to get more information about these commands.
x + A A 3 B * A
A * B
2 * B
B(:,2)
A.^2
exp(B(1,1))
cos(pi*A)
sin((pi/2)*A(1,2))
exp(j*pi/4*B)
University of Toronto
11
ECE Department
Course ECE221H1S
Lab #1
Winter 2014
Applications Arrays
Solving sets of simultaneous equations In Electric Circuit Analysis you often need to solve sets of simultaneous equations which result from the basic techniques of circuit analysis (nodal and mesh analysis). Doing this by hand can be a time consuming process, but in MATLAB the solutions to these equations can be easily found. This is only useful if we are dealing with cases where the coefficients of the equations are numbers. In cases where the coefficients contain one or more variables we must know how to solve this by hand. This might occur in a design-type problem where the value of a resistor is not known and the purpose of the problem is to determine the correct resistor value for a desired circuit operation. To start, consider the set of equations given by: 51 62 = 0 101 + 142 = 2
This can be converted to matrix form as: 0 5 6 1 = 2 10 14 2 With the solution given by: 1.2 5 6 1 0 1 = = 2 2 1 10 14
In MATLAB this can be solved using the inv command (see help inv): >> inv([5 -6;-10 14])*[0;2]
ans = 1.2000 1.0000 Note, that the matrix multiplier, *, is used rather than the dot multipler, .*, since we want real matrix multiplication rather than element-by-element multiplication. Use MATLAB to solve the following sets of equations: 161 22 43 = 6 21 + 62 24 = 0 a) 41 22 + 43 + 64 = 0 3 + 4 = 3
Make sure to discuss your final results with your TA before you leave the lab.
University of Toronto 12 ECE Department
91 22 23 = 4 21 + 102 43 4 5 = 6 21 42 + 93 = 6 b) 2 + 84 35 = 0 2 34 + 45 = 6
Course ECE221H1S
Lab #1
Winter 2014
More than one plot can be made in the same figure by specifying multiple arguments in the plot command. Try:
>> clf % This clears the current figure window >> plot(x,2*x.^2,x,4*x.^2)
Multiple plots can also be created on different axes in the same window, using the subplot command:
>> figure >> subplot(2,1,1) % Breaks the figure window into two axes (top and bottom) >> plot(x,2*x.^2) % Plots the function in the top set of axes >> subplot(2,1,2) % Switches the current axes to the bottom set >> plot(x,4*x.^2) % Plots the function in the bottom set of axes
Often it is useful to plot a function on a semilog or a log-log set of axes. For example, try the following commands: >> figure >> subplot(3,1,1) >> plot(x,x.^2) >> subplot(3,1,2) % Switches the current axes to the middle set >> semilogx(x,x.^2) % Plots the function with the x-axis set to a log scale >> subplot(3,1,3) % Switches the current axes to the bottom set >> loglog(x,x.^2) % Plots the function with both axes set to a log scale
University of Toronto 13 ECE Department
Course ECE221H1S
Lab #1
Winter 2014
Note that these commands must follow rather than precede the plot command. You can adjust the range of the axes of this plot by using the command axis. For example try the command: >> axis([0 5 -1 1]) What are the new ranges of the and axes?
Note, the command axis equal sets the ranges of the and axes to be the same.
Your second plot should plot the two functions on two separate axes in the same figure window, i.e., through the use of the subplot command.
Make sure to discuss your final plots with your TA before you leave the lab.
University of Toronto
14
ECE Department