Matlab Tut Basic
Matlab Tut Basic
Topics: opening matlab m-files general syntax plotting function files loops GETTING HELP
Matlab is a program which allows you to manipulate, analyze and visualize data. MATLAB allows easy matrix manipulation, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs in other languages. The drawback to using Matlab is the specific syntax you will have to learn prior to being able to operate the software efficiently. The purpose of this tutorial is to introduce you to the basics of Matlab and give you the skills you will need to complete the homework in this class. It is important to note that Matlab has many additional functions and features which will not be discussed here, but may be helpful in your future work. The current version is MATLAB 7.1 Service Pack 3. It is available for commercial use for approximately US$2000 and US$100 for an academic license with a limited set of Toolboxes. It is also available for FREE with your MIT certificate. You can download it from: http://matlab.mit.edu There are also other numerical analysis software packages available that we will not be using in this class. http://en.wikipedia.org/wiki/List_of_numerical_analysis_software Opening Matlab On a MAC or PC, just double-click. On Athena, type: add matlab;
matlab
First time, make a working directory: mkdir ~/matlab In MATLAB, you can access more Athena options by typing: help athena On some MATLAB workstations you can access newer versions of MATLAB by typing at the matlab prompt: matlab-desktop
m-files When writing code in matlab, it is best to write the code in the editor function of the program. You can open the editor by opening a new or existing m-file. The m-file is the file format executed by Matlab. The file is saved in the work directory of Matlab by default, but can be saved in an alternate directory. You can move to another directory by clicking the [] button and browsing to it. Writing in an m-file allows you to save your code and debug it much more efficiently. In these m-files, it is also helpful to comment your code. % A comment line starts with a percent-sign For the work you perform today, it may be helpful to write the basic code in an m-file and save it for future reference. General Syntax Data can be also be entered by typing directly into the command window. To store a given data set in the workspace, the data must be preceded by a variable name. example entry: A=3; The variable name can be any combination of letters and numbers, but it must begin with a letter and they are case sensitive. After a variable is entered, it will be displayed in the workspace. If the variable is double clicked on in the workspace, the value of the variable will be displayed in a spreadsheet in a new window. The value of the variable can also be printed in the command window by typing the name of the variable and hitting enter. To prevent the value of a variable or a statement from being printed to the command window, follow the statement with a semicolon. Generally speaking, it is best to end all lines with semicolons. It will increase the speed with which the program will run and decrease the clutter of your command window. Matrices and Vectors Matlab was designed to deal mainly with numerical data in matrix or vector form. Due to this design criteria, the some of the standard mathematical operations function as matrix operations and not as you might expect. Before we can examine how to operate on vectors or matrices, we must know how to define them in Matlab. A vector is either a column or a row of numbers, they are defined as follows: A row vector: row =[1 2 3 4]; A column vector: column =[1;2;3;4]; A matrix: ex_matrix=[1 2 3; 4 5 6; 7 8 9;]; The above example creates a three by three matrix. The only key to defining a matrix is to ensure that each column or row has the same number of elements.
Short-cuts to creating vectors and matrices: Z = (1:5); %means Z = [1 2 3 4 5] Z = (1:3:10); % means Z = [1 4 7 10] Z = linspace(a,b,n); %means create a vector with evenly-spaced points between a and b Z = logspace(a,b,n); %means create a vector with logarithmically-spaced points between 10^a and 10^b zeros(a, b); %means create an axb matrix of all zeros ones(a,b); %same thing but a matrix of all ones One might ask, why would we want to deal with matrices? A simple example is solving systems of equations, but the true power of matrices is illustrated in many numerical methods or applied math class like 18.085. Matrix Manipulation Being able to easily manipulate the values, columns, and rows of a matrix will make your life much easier. The following are examples of the syntax used with matrices: Enter the following matrices into your command window: A=[1 2 3]; B=[4 5 6]; Now, try the following matrix manipulations: C = [A B] means C = [1 2 3 4 5 6]
D = [A;B] means D = [1 2 3; 4 5 6]
E = D(1,2) means E = 2
F = D(2,2:3) means F = [5 6]
G = D(:,3) means the third column of D, so G = [3;6]
H = D(1,:) means the first row of D, so H = [1 2 3]
I = H means transpose the matrix, so I = [1;2;3]
Exercise 1: M=[1 2 3; 4 5 6; 7 8 9;]; Using the the M matrix above, switch columns 2 and 3.
Then switch rows 1 and 3.
Then transpose the matrix.
What is the element at position (2,2)? Addition and subtraction. These commands function normally and do not require any additional syntax to have the operation preformed on variables in your workspace. It is important to note, addition or subtraction is performed between elements in the same position in the array or matrix. Therefore, you will need to ensure the matrices you are operating on have the same dimensions.
Exercise 2: Enter the following variables into your command window: A=[1 2 3];
B=[1;2;3];
Can you subtract A from B?
Can you add A to A?
Multiplication and division.
* and / are for matrix multiplication and division, and the dimensions of the matrices must be
compatible.
.* and ./ do element-by-element multiplication and division.
So, [1 2 3].*[4 5 6] gives [4 10 18] A^2 means the cross-product of A with itself, and A must be a square matrix. A.^2 means square each element of A. So, [1 2 3].^3 gives [1 8 27] but [1 2 3]^3 gives an error. Forgetting the dot is one of the most common bugs! Exercise 3: Enter the following data into the Matlab command window. A=[0 2; 1 4];
B=[1 3; 2 6];
What is A*B?
What is A.*B?
What does A.^-1 produce verses A^-1?
Plotting Data Given a set of data, it can be useful to display it graphically. This is where the plot function is useful. There are many different plot function in Matlab which are meant for varying types of data. None of these other plotting functions will be explained here, but more information about the plotting options can be found by typing plot help. The following is the general syntax for plotting: plot(independent_var, dependent_var, formatting for data) In general, it is possible to plot multiple sets of data on a given plot by either entering an additional set of independent and dependent variables following the first set in the parentheses as follows: plot(x1,y1,x2,y2)
Multiple data sets can also be plotted in the same figure by typing the command hold on. plot(x1,y1); hold on plot(x2,y2); If you have several plots active at a given point in time, the figure may need to be stipulated before using the plot function with the following syntax: figure(figure_number) The third potential entry in the plot function is the option to format the way in which the data is plotted. This is normally just a combination of a letter and a symbol. The letter will designate the color of the line or symbol used in plotting the data. The symbol will determine if a line is plotted or if each individual point is plotted with a symbol. The syntax for color and symbol is shown on the attached cheat sheet or can be found in the plot help listing. Additional syntax relating to plotting is listed below: Displays a label on the x-axis: xlabel(Time in seconds) Displays a label on the y-axis: ylabel(Distance in meters) Puts a title at the top of the figure: title(Distance verses time) Exercise 4: Generate a time scale from 0 to 100. Then produce an array of corresponding values for the function y=1-exp(-t./100). Plot the data with labels on the axes and a title. Function Files Function files are a specific class of m-files. They are normally written as stand alone functions. This allows them to be called by the user on multiple occasions, but it can have different sets of data applied to it. A function can have one or many inputs and outputs and are called in the following ways: out = functionname(in1, in2, ..., inN);
[out1, out2, ..., outN] = functionname(in1, in2, ..., inN);
Try creating a separate function file and then calling it. For example, the following code could be written in a separate file called myfunction. function F = myfunction(x,y,z)
%this function adds up 3 numbers and returns the answer
F = x+y+z;
Now, you can call this file from the command window or from an m-file like this: sum_abc = myfunction(a,b,c); Exercise 5: Go back to your exercise 4 code, and create a function to solve for y. You could pass the start time and end time to your function, for example. Loops Three types of loops exist in Matlab. These loops function as a means of selectively operating on variables in your workspace. These loops are IF/ELSE, FOR, and WHILE. An IF/ELSE loop performs a specific operation if a condition is true. If the condition is false, the loop will then proceed to the else condition. If this condition is not met the loop will end by performing the action following else, if one exists. Example syntax is shown below: if I==J
A(I,J) = 2;
elseif abs(I-J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end
The FOR loop performs a series of operations a known number of times. The example code below illustrate the syntax: for I=1:N
for J=1:N
A(I,J) = 1/(I+J-1);
end
end
The final type of loop is a WHILE loop. It requires that a series of operations occur while the condition applied to a specified variable is correct. The example syntax is: I=1; N=1; while I<=100
I=I+rand;
N=N+1;
end < less than, > greater than, >= greater than or equal to, <= less than or equal to, == equal, ~= not equal, & and, | or, ~ not Note, == is a test of equality, 1 if yes, 0 if no. = is used in assignment.
Additional exercises: 1. You are given the following set of x,y coordinate data: X=[ 1 2 5 -2 -1];
Y=[9 6 -3 5 7];
Which point is closest to the origin (0,0)?
Which point is furthest from the origin?
What is the average distance from the origin?
2. Produce a piecewise function with the following function in the given domains: 0<x<2 2<x<4 4<x<6 y=0.5*x.^2
y=2
y=6-x
Generate the appropriate data and then produce the graph by only plotting two variables (ie plot(x,y)). 3. Sort the following data using loops to order the first column without losing the
corresponding values in the second and third columns.
data = [8 1.5 0; 5 -1 1;1 -3 1; 11 2 1; 15 2 -1; 3 -3 0; 10 1 1; 14 1 -1; 2 -3 -1; 9 1.5 1; 6 -1 -1; 12 1.5 1; 4 -1 0; 7 -1 0; 13 1.5 -1;]; Then plot the data and see what youve got.