User:Eml4500.f08.ateam.nobrega/Homework Report One
Contents
- 1 Lecture Notes Through September 5th
- 2 What is Matlab?
- 3 An Introduction to the Matlab Primer
- 3.1 Accessing MATLAB
- 3.2 Entering Matrices
- 3.3 Matrix and Array Operations
- 3.4 Statements, Expressions and Variables
- 3.5 Matrix Building Function
- 3.6 For, While, If - and Relations
- 3.7 Scalar Functions
- 3.8 Vector Functions
- 3.9 Matrix Functions
- 3.10 Command Line Editing and Recall
- 3.11 Submatrices and Colon Notaion
- 3.12 M-files
- 3.13 Text Strings, Error Message, Input
- 3.14 Managing M-Files
- 3.15 Comparing Efficency of Algorithms Flops, Tic and Toc
- 3.16 Output Format
- 3.17 Hardcopy
- 3.18 Graphics
- 3.19 Sparse Matrix Computations
- 4 Citations
- 5 Contributing Team Members
Lecture Notes Through September 5th[edit]
What is Matlab?[edit]
MATLAB is short for "matrix laboratory". It is a program software that allows users to solve numerical problems using a programming language similar to, yet simpler and faster than, Fortran or C++. It is a matrix based system that allows for quick computation and visualization of scientific and engineering problems such as, but not limited to, plotting data and functions, implementing algorithms, solving algebraic expressions and creating programs.
An Introduction to the Matlab Primer[edit]
The MATLAB Primer Tutorial was written based on the 4.0 and 4.1 version of MATLAB. However, it can be used in updated versions of MATLAB as well. The Primer was written by Kermit Sigmon, Department of Mathematics at the University of Florida. It is designed to help one use MATLAB. It is encouraged that the Primer be used hands on with the reader sitting at their computer going through the examples. Users should type the commands into the MATLAB command window and view the MATLAB generated output for each topic.
If the user is unsure of how to perform a task or if an error message arises, he or she should call on the help function. This function can be called by typing the word help into the command window. Doing this will display a list of topics for the user to choose from. To call for a specific help topic type in the word help followed by a space and the name of the topic one is searching for. Another helpful command is to type in the word demo into the command space, allowing the user to preview some of the MATLAB functions.
The MATLAB Primer is a set of instructions for how to perform basic MATLAB functions. The MATLAB User's Guide and Reference Guide will need to be accessed for more advanced applications. To find these documents consult your instructor or visit your local library or computer lab.
"MATLAB is available for a number of environments: Sun/Apollo/VAXstation/HPworkstations, VAX, MicroVAX, Gould, PC and AT compatibles, 80386 and 80486 computers, Apple Macintosh, and several parallel machines. There is a relatively inexpensive Student Edition available from Prentice Hall publishers." ^{[1]}
Accessing MATLAB[edit]
After logging on to a computer, the easiest way to access MATLAB is to double-click the MATLAB icon on the desktop or search for MATLAB in your program list. The MATLAB icon ^{[2]} is featured below:
Entering Matrices[edit]
Matrices in MATLAB can be entered in several different ways. Below are two examples that output the same matrix.
>> A=[1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9
>> A = [ 1 2 3 4 5 6 7 8 9 ] A = 1 2 3 4 5 6 7 8 9
Entering Matrices with complex numbers. Below are two different ways to enter complex matrices.
>> B = [1 2;3 4] + i*[5 6;7 8] B = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i
>> B = [1+5i 2+6i;3+7i 4+8i] B = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i
Referencing an element from a matrix. For example in the matrix A above, if you want to reference the value of the element located in row 2, column 3 type A(2,3). View example below.
>> A(2,3) ans = 6
Matrix and Array Operations[edit]
MATLAB incorporates the following matrix operations:
- Addition +
- Subtraction –
- Multiplication *
- Exponential Power ^
- Conjugate Transpose ‘
- Left Division \
- Right Division /
Care must be taken to ensure that sizes of the matrices are compatible or an error message will result, and the computation will not be performed."It is important to observe that these other operations, *, ^, \, and /, can be made to operate entry-wise by preceding them by a period." ^{[3]} See the following example for further clarification.
>>[6,7,8,9].*[6 7 8 9]
ans =
36 49 64 81
Notice that the operation performed was not matrix multiplication but rather an entry by entry multiplication. See the following example for matrix multiplication.
>>A=[1 2;3 4]
A =
1 2 3 4
>> B=[1 2;3 4]
B =
1 2 3 4
>> A*B
ans =
7 10 15 22
Statements, Expressions and Variables[edit]
"MATLAB is an expression language. Expressions you type are interpreted and evaluated." ^{[4]} Examples of statement formatting:
or
Expressions may consist of functions, operators, and names of variables. The return key executes your typed command. MATLAB is case sensitive and therefore care must be exercised when entering variable names. For example:
The command "who" or "whois" displays variables currently stored in MATLAB. The command " clear variablename " deletes a specific variable.
The command "eps" prints the machine round off point useful for iterative convergence.
If a run away computation is experienced "CTRL-C" or "CTRL-BREAK" will break the calculation.
Saving the Workspace[edit]
When MATLAB is exited, all variables are lost unless previously saved. The command "save" will generate a file entitled "matlab.mat". When re-entering the program, the command "load" will reopen the saved workspace.
Matrix Building Function[edit]
Matrix building functions are
eye identity matrix zeros matrix of zero ones matrix of ones diag create or extract diagonals triu upper triangular part of the matrix tril lower triangular part of the matrix rand randomly generated matrix hilb Hilbert Matrix magic magic square topelitz see help topelitz
Functions like zeros, eye, and ones can be used to create matrices. The functions are followed by the size of the matrix.
Ex:
0 0 0 0 0 0
Functions such as diagonals vectors require a vector as an input.
Ex:
2 2 2 2
2 2
You can combine and create new matrices using multiple functions.
Ex: This function will create a 5x5 matrix shown below.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
For, While, If - and Relations[edit]
For.
Using the For. statement to produce a vector. Example for n = 3
>> x = []; for i = 1:n, x=[x,i^2], end
or
>> x = []; >> for i = 1:n x = [x,i^2] end
Will result in:
x = 1 x = 1 4 x = 1 4 9
Producing the same vector as shown above, but in reverse order. Example is shown below.
>> x = []; for i = n:-1:1, x=[x,i^2],end x = 9 x = 9 4 x = 9 4 1
While.
A while loop allows for the statement to be executed continuosly aslong as the relation defined remains true.
General Form: while relation statement end
Example:
>> a =30; >> n = 0; >> while 2^n < a n = n + 1; end
Will result in:
>> n n = 5
If.
An if statement is only executed if the relation is true.
General Form: if relation statement end
Example:
>> if n < 0 parity = 0; elseif rem(n,2) == 0 parity = 2; else parity = 1; end
Relations
MATLAB Relational Operators: ^{[5]}
< | less than | |
> | greater than | |
<= | less then or equal | |
>= | greater than or equal | |
== | equal | |
~= | not equal |
MATLAB Logical Operators: ^{[6]}
& | and | |
| | or | |
~ | not |
If the statement is true it is a value of 1. If the statement is false it is a value of 0. See the examples below.
>> 3 < 5 ans = 1 >> 3 > 5 ans = 0 >> 3 == 5 ans = 0 >> 3 == 3 ans = 1
>> a = rand(5) a = 0.9501 0.7621 0.6154 0.4057 0.0579 0.2311 0.4565 0.7919 0.9355 0.3529 0.6068 0.0185 0.9218 0.9169 0.8132 0.4860 0.8214 0.7382 0.4103 0.0099 0.8913 0.4447 0.1763 0.8936 0.1389 >> b = triu(a) b = 0.9501 0.7621 0.6154 0.4057 0.0579 0 0.4565 0.7919 0.9355 0.3529 0 0 0.9218 0.9169 0.8132 0 0 0 0.4103 0.0099 0 0 0 0 0.1389 >> a == b ans = 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1
Scalar Functions[edit]
MATLAB has built in functions that operate on scalars, but can also operate on individual elements of a matrix. The most common of these functions are as follows:
sin | asin (arcsin) | exp (exponential ) | abs | round |
cos | acos (arccos) | log (natural log) | sqrt | floor |
tan | atan (arctan) | rem (remainder from division) | sign | ceil |
See the following examples:
>>sin(3*pi/2)
ans =
-1
>> log(1)
ans =
0
Vector Functions[edit]
Some MATLAB functions perform actions on vectors in a column by column fashion and produce a row vector with the results. If one wants to operate on a row by row basis, the transpose can be used.
max min sort sum prod median mean std any all
For example, to calculate on a row by row basis and find the mean:
mean(A')'
For example, the max value in a matrix B is determined by:
max(max(B))
The command example above is nested within itself. The inner most "max" function produces a single row of the max values for each column of the original matrix. The outer function produces the maximum value of these remaining row vector values.
Matrix Functions[edit]
eig eigenvalues and eigenvectors chol cholesky factorization svd singular value decomposition inv inverse lu LU factorization qr QR factorization hess hessenberg form schur schur decomposition rref reduced row echelon form expm matrix exponential sqrtm matrix square root poly characteristic polynomial det determinant size size norm 1-norm, 2-norm F-norm cond condition number in the 2-form rank rank
Above is a list of matrix functions that can be used. These functions can be called using a variety of commands.
Ex:
Or
Command Line Editing and Recall[edit]
Keys and their functions to edit in MATLAB
left/right arrows | scrolls the cursor left and right | |
up/down arrows | scrolls up and down from line to line | |
backspace | deletes the character left of the cursor | |
delete | deletes the character left of the cursor | |
home | moves the cursor to the beginning of the line | |
end | moves the cursor to the end of the line |
Submatrices and Colon Notaion[edit]
"Vectors and submatrices are often used in MATLAB to achieve fairly complex data manipulation effects. "Colon notation" ( which is used both to generate vectors and reference submatrices) and subscripting by integral vectors are keys to effcient manipulation of these objects." ^{[7]} A row vector of length n may be defined as 1:n where n represents the length of the vector. The default increment is taken to be 1 unless otherwise specified. See the following examples for further clarification. A row vector of length n may be defined as 1:n where n represents the length of the vector. The default increment is taken to be 1 unless otherwise specified. See the following examples for further clarification.
>>1:5
ans =
1 2 3 4 5
>> 1:2:5
ans =
1 3 5
Both vectors are row vectors from 1 to 5, but the second vector is from 1 to 5 with an increment of 2."
Colon Notation" may also be used to access submatrices of a matrix, and to replace elements within matrices. See the following example for further clarification.
>>A =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
>> A(1:2,3)
ans =
3 7
This creates a column vector consisting of the first 2 entries of the 3rd column of matrix A.
M-files[edit]
M-files are a specific type of file MATLAB is capable of executing. A M-file consists of a series of sequential commands and are characterized by the ".m" file extension. MATLAB M-files fall into two categories: script files and function files.
Script Files[edit]
Script files are composed of normal MATLAB commands. To execute the commands inside of a script file, simply type the file name. For example, if the file name is "transpose.m", the command "transpose" will execute all the statements to be performed.
Details of script files:
- Can reference other M-files or itself
- Variables are global and will overwrite current session variables
- Useful to avoid repetitious data entry
To create a .m script file, simply use the built in editor of MATLAB and save the file with a .m extension. For example if the following M-file entitled "test.m" was executed by using the command "test":
B=[1,2,3;4,5,6;7,8,9] A=[9,8,7;6,5,4;3,2,1] C=A+B
The current workspace will now have three variables imported into memory: A, B, and the result, C.
Function Files[edit]
The second type of M-file is the function file. This tool extends the convenience of built in functions but allows for customization to specific tasks. Note that variables in a function file are local by default. See the following example from the MATLAB Primer document.
function a = randint(m,n) %RANDINT Randomly generated integral matrix. % randint(m,n) returns an m-by-n such matrix with entries % between 0 and 9 a = floor(10*rand(m,n));
^{[8]}
Note the following procedures when creating a function file:
- First line must begin with "function" and define the input variables
- "%"-Allows for comments
- Last line defines output variables
As an example to run the above program, "k = randint(4,3)" could be used.
This command passes 4 and 3 to the program and stores the result in a new matrix, k. Note that variable names are not carried over outside of the function M-file.
Text Strings, Error Message, Input[edit]
Text strings can be entered into Matlab using single quotations. These strings can be displayed by using the disp command.
Ex: s= ‘peter pan had an accident’
disp(‘peter pan had an accident’)
Error messages that are placed in M-files can abort the program.
Ex:
error(‘Sorry, this matrix is wrong’)
Strings can also be added into an M-file to make the program interactive.
Ex:
iter = input(‘Enter the number of times you want to enter a number:’)
Managing M-Files[edit]
It is recommended that if your system allows you to run multiple processes that you keep both the MATLAB Command Window and your m-file editor open simultaneously. At any point if you would like to edit your m-file use the function !ed. For example you would type into the command window as follows:
>>!ed filename.m
Note: Make sure to replace filename with the file you are trying to edit.
Commands useful for managing m-files.
!ed filename.m | would allow you to edit file named filename.m | |
pwd | returns the name of the current working directory | |
cd | allows you to change the working directory | |
delete | deletes a diskfile | |
type | prints m-file to screen | |
what | list m-files in working directory | |
dir or ls | list the contents of the working directory |
Comparing Efficency of Algorithms Flops, Tic and Toc[edit]
Older versions of MATLAB had the function flops which kept a running total of flops performed to solve and algorithm. In more resent versions of MATLAB the command function flops is unavailable and an error message will appear if the command is entered. The command function “tic, any statement, toc” ^{[9]} can be used to obtain the elapsed time (in seconds) it takes MATLAB to solve the algorithm. This enables the user to compare the efficiency of his / her algorithms. See the example below for further explanation.
>> A=[ 1 2 3; 7 8 9; 4 5 6]
A =
1 2 3 7 8 9 4 5 6
>> b= [1 2; 4 5; 8 9]
b =
1 2 4 5 8 9
>> x=A*b
x =
33 39 111 135 72 87
>> tic, x=A*b; toc
Elapsed time is 0.000000 seconds.
Output Format[edit]
MATLAB calculations are performed in double precision. However, output formatting can be changed with the following commands:
format short fixed point with 4 decimal places (default) format long fixed point with 14 decimal places format short e scientific notation with 4 decimal places format long e scientific notation with 15 decimal places format rat approximation by ratio of small integers format hex hexadecimal format format bank fixed dollars and cents format + +, -, blank
Hardcopy[edit]
The easiest way to safe your command file in Matlab is the diary command. The diary command, when followed by a file name will save the data under the new name. However if no file name is provided, the file will be saved under a generic name of diary. The file can be opened later for further editing or printing.
Graphics[edit]
Planar Plots[edit]
The plot command creates linear x-y plots; if x and y are vectors of the same length, the command plot(x,y) opens a graphics window and draws an x-y plot of the elements of the x versus the elements of y.^{[10]}
For example command:
>> x = -4:.01:4; y=sin(x); plot(x,y)
Results in:
300px
One can also refrence a function from an m-file in the given format:
>>fplot('expnormal',[-1.5,1.5])
Results in:
300px
Plots of parametrically defined curves can also be made. For example:^{[11]}
300px
Commands for plots: ^{[12]}
title | graph title | |
xlabel | x-axis label | |
ylabel | y-axis label | |
gtext | place text on the graph using the mouse | |
text | position text at specified coordinates | |
grid | places grid lines on the current graph |
Manualing Scaling Axes: ^{[13]}
axis([x_{min},x_{max},y_{min},y_{max}]) | set axis scaling to prescribed limits | |
axis(axis) | freezes scaling for subsequent graphs | |
axis auto | returns to auto-scaling | |
v = axis | returns vectorv showing current scaling | |
axis square | same scale on both axes | |
axis equal | same scale and tic marks on both axes | |
axis off | turns off scaling and tic marks | |
axis on | turns on scaling and tic marks |
Multiple Plots on a Single Graph: Two possible ways
1. Example: Listing them within the same command line
>> x=0:.01:2*pi; Y=[sin(x)', sin(2*x)', sin(4*x)']; plot(x,Y)
Result in:
300px
2. Example: Using the hold function
>> x=0:1:10; y=x; plot(x,y) >> hold on >> x=0:1:10; y=2*x; plot(x,y) >> x=0:1:10; y=3*x; plot(x,y) >> hold off
Result in:
300px
Editing Linetypes, Marktypes, and Colors of plots:
Commands:
- Linetypes: solid(-), dashed(--), dotted(:), dashdot(-.)
- Marktypes: point(.), plus(+), star(*), circle(o), x-marks(x)
- Colors: yellow(y), magenta(m), cyan(c), red(r), green(g), blue(b), white(w), black(k)
Example Code:
>> x=0:.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,'--',x,y2,':',x,y3,'+') 300px
Graphics Hardcopy[edit]
To obtain a hardcopy of your plots you would use the commmand:
3-D Line Plots[edit]
To plot a 3-D line defined by vectors x, y, z of the same size, you would use the command plot3(x,y,z). Below is an example:
>> t=.01:.01:20*pi; x=cos(t); y=sin(t); z=t.^3; plot3(x,y,z) Result in: 300px
3-D Mesh and Surface Plots[edit]
3-D Surface Mesh plots are drawn with the command mesh^{[14]}
Example Code:
>> mesh(eye(10)) Result in: 300px
Faceted surface plots are drawn with the command surf^{[15]}
Example Code:
>> surf(eye(10)) Result in: 300px
Plotting 3-D Functions:
Function: Code: >> xx = -2:.2:2; >> yy = xx; >> [x,y] = meshgrid(xx,yy); >> z = exp(-x.^2 - y.^2); >> mesh(z) Resulting in: 300px
One could also use the surf command for the same function resulting in:
Code: >> surf(z) 300px
Shading and Color Profiles
Commands:
*shading faceted *shading interp *shading flat
*colormap(hsv) Note: Default *colormap(hot) *colormap(cool) *colormap(jet) *colormap(pink) *colormap(copper) *colormap(flag)
Other Useful Commands: Can further explore under the help command
*meshz *surfc *surfl *contour *pcolor
*colormap(gray) *colormap(bone)
Sparse Matrix Computations[edit]
A great deal on computation time and memory storage space can saved when performing calculations on a matrix that has many zero entries by using the command sparse. “Matlab has two storage modes, full and sparse with full the default. The functions full and sparse convert between the two modes.”^{[16]} "A sparse matrix is stored as a linear array of it’s nonzero elements along with their row and column indices.”^{[17]} See the following example for further explanation.
F =
9 4 0 0 0 0 2 0 7 0 0 0 0 8 1 0 0 0 0 0 4 3 6 0 0 0 0 8 2 4 0 0 0 0 1 4
>> S=sparse(F)
S =
(1,1) 9 (2,1) 2 (1,2) 4 (3,2) 8 (2,3) 7 (3,3) 1 (4,3) 4 (4,4) 3 (5,4) 8 (4,5) 6 (5,5) 2 (6,5) 1 (5,6) 4 (6,6) 4
>> F=full(S)
F =
9 4 0 0 0 0 2 0 7 0 0 0 0 8 1 0 0 0 0 0 4 3 6 0 0 0 0 8 2 4 0 0 0 0 1 4
The command S=sparse(F) creates the sparse matrix S from the matrix F, and the command F=full(S) returns matrix F back to its original form.
Citations[edit]
- ↑ MATLAB Primer http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf
- ↑ http://www.zaphu.com/v1/wp-content/uploads/2007/10/icon-matlab.gif
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 3.
- ↑ MATLAB Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 7
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 8.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 10
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 14.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 20.
- ↑ Matlab Primer. http://apollo.mae.ufl.edu/~vql/courses/feem/matlab_primer_3rd.pdf. pg. 20.
Contributing Team Members[edit]
The list below is in no particular order.
Pedro Rivero User:Eml4500.f08.ateam.rivero 18:14 , 17 September 2008 (UTC)
Akash Shah Eml4500.f08.ateam.shah 14:49, 18 September 2008 (UTC)
Tatiana Nobrega User:Eml4500.f08.ateam.nobrega 23:03, 18 September 2008 (UTC)
Michael Carr Eml4500.f08.ateam.carr 23:13, 18 September 2008 (UTC)
Taylor Boggs Eml4500.f08.ateam.boggs.t 04:34, 19 September 2008 (UTC)
Josh McNally Eml4500.f08.ateam.mcnally 03:41, 19 September 2008 (UTC)