MATLAB Tutorial

advertisement
1
Get Started in MATLAB (Math 3090 F 2004)
The best way to learn MATLAB is by trying it yourself. Here, we give you a quick tour
and hope it will give you a sense how MATLAB operates and get you start to use it for
the course.
1. Common properties in Matlab
 To enter MATLAB, click “start”, choose “programming files”, and select
“MATLAB 7.0” from the menu.
 Once entered to MATLAB, type your commands after the MATLAB prompt, >>,
in the command window.
 Case sensitive, i.e., n and N are different variables
 Typing the name of the variable or type the name with a “,” displays its current
value
 A semicolon at the end of a command suppresses the screen output
 The up and down arrows can be used to scroll through your previous commands.
Also, an old command can be recalled by typing the first few characters followed
by up arrow
 Comment line starts with %
 Type help topic to access online help on the command, function or symbol topic.
Eg., help sqrt
 Type lookfor keyword to search for functions related to the keyword, eg., lookfor
plot


Type clear x to clear the variable x from the workspace, while clear or
all will erase all the existing variables in the workspace
Type exit or quit to quit MATLAB
clear
2. Numbers and Arithmetic Express
Here are some examples of legal numbers in MATLAB:
3
9.6397238
2i
-99
1.60210E-20
-3.14159i
0.0001
6.022332e23
3e5i
You can build expression with the usual arithmetic operators and precedence rules:
+
*
/
\
^
addition
subtraction
multiplication
right division
left division
power
MATLAB provides the elementary mathematical functions as build-in functions.
These functions include abs, sqrt, log, sin, and atan, etc. You can also add your
own functions with M-files.
% It also defines some commonly used
% special values like Pi. Try the following:
>> a = pi
>> b = 4 * atan(1)
>> a-b
% MATLAB allows complex numbers, indicated by
2
% the special functions i and j.
>> z = 3 + 4*i,
>> r = abs(z), % complex magnitude
>> theta = angle(z), % the phase angle
>> w = r * exp(i*theta)
The build-in function i can also be a variable. When used as a variable previously,
then i becomes unavailable within the current workspace until the variable is cleared.
% Another way to avoid such a problem and define the complex value is
>> ii = sqrt(-1)
>> z = 3 + 4 * ii
Division by zero does not lead to an error condition or termination of execution in
Matlab. Try
>> s = 1/0
% which result in
% Warning: Divide by Zero
% s =
%
Inf
% means infinity
3. Output Format
You can use format command to control the numeric display format.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
x = [4/3, 1, 1.2345e-6]
format short
x
format short e
x
format long
x
format long e
x
format bank
x
format hex
x
format short
4. Vector, Matrix, and their operations
>> A = [2 1 0; 1 3 1; 0 1 2]
>> b = [10:12]
>> A = [A; b]
% You can extract small matrices from large matrices using : (a colon)
>> B = A(1:2, :)
% a colon with any beginning or ending value means all
>> C = A(:, 1:2)
>> D = A(1:3, 1)
>> At = A’
>> A = A(1:3, 1:3);
>> invA = inv(A)
% transpose matrix A
% take a 3 by 3 sub-matrix from A
% inverse of A
% adding and subtracting matrices
>> C = A + A’
>> x = [1 2 3]
>> y = x’ – 1
% multiplying matrices
% inner (or dot) product
>> z1 = x*y
3
% outer product
>> z2 = y*x
% matrix and scalar product
>> C = 2 * A
% matrix and vector product
>> b = A*x’
% Dividing matrices
% X = A\B is a solution to A*X = B
% X = B/A is a solution to X*A = B
% For example,
>> sol_right = A\b
>> b = x*A
>> sol_left = b/A
% matrix functions
>> det(A)
%
>> trace(A)
%
>> kron(A)
%
>> norm(A, 2)
%
>> help norm
%
determinant
trace
Kronecker product
matrix 2-norm
for more details
% other ways to generate a vector of consecutive numbers
>> x = [1:5]
% generate a vector of numbers from 1 to 5 with unit
% increments
>> y = 0:pi/4:pi
% with increments pi/4
>> z = pi:-pi/4:0
% with negative increments
>> v = sin(y)
% combined with functions
% pointwise (element-by-element) operations
>> w1 = x .*v
>> w2 = x./v
>> w3 = x.^2
% special matrices
>> x =[]
% empty matrix
>> x = zeros(3, 3)
% zero matrix of size 3 by 3
>> x = ones(3, 3)
% all one matrix
>> x = eye(3, 3)
% identity matrix
>> y = rand(3)
% random matrix with uniform distribution
>> z = randn(3, 3)
% random matrix with normal distribution
%
%
%
%
%
%
%
%
%
%
manipulating matrices
rot90 – rotation
fliplr – flip matrix left-to-right
flipup – flip matrix up-and-down
diag – extract or create diagonal
tril – lower triangular part
triu – upper triangular part
reshape – reshape the maxtrix
: - general arrangment of matrix elements
You can try yourself. Here, I provides a few examples
>> A = 1:12
>> B = reshape(A, 3, 4)
>> tril(B)
5. Writing M-files
MATLAB is usually used in a command-driven mode; when you enter single-line
commands, MATLAB processes them immediately and displays the results. MATLAB
can also execute sequences of commands that are stored in .m files, called M-files.
4
An M-file consists of a sequence of normal MATLAB statements, which possibly
include references to other M-files. Two types of M-files can be used: scripts and
functions. Scripts, automate long sequences of commands. Functions, provide
extensibility to MATLAB. They allow you to add new functions to the existing functions.
Both scripts and functions are ordinary ASCII text files. To access the embedded
ASCII text file editor in MATLAB, go to “file”, select “ new” and then choose “M-files”
to create a new M-file, or select “open” to open an existing M-file.
Script files or scripts
Type the following file into your directory and save it as “fofdh.m”. And we will use
it as an example.
% Name: fofdh.m
% This MATLAB code is for the first order finite difference algorithm.
% It is applied to Newton's law of cooling model.
% setting up the parameters
n = 300;
% Number of Time Steps
h = 1;
% Time step size
y_sur = 70;
% room (surrounding) temperature
% initializing the time and coffee temperature arrays
y = zeros(n+1,1); % set up a coffee temperature column array of size n+1
y(1) = 200;
% initial temperature
t = zeros(n+1,1);
% set up a time column array of size n+1
% estimating the parameter c, insulation ability of the cup
h_obser = 5;
% time of observing the coffee temperature
y_obser = 100;
% observed coffeed temperature at time h_obser
c = (y_obser - y(1))/(h_obser * (y_sur - y(1)));
% calculating parameters a and b
a = 1-c*h;
b = c*h*y_sur;
% iteratively calculate the coffee temperature
for k = 1:n,
y(k+1) = a*y(k) + b;
t(k+1) = t(k) + h;
end
% display the result
plot(t,y);
In MATLAB command window, do the following
>> clear
>> fofdh
% erase all the existing variables
% execute the file fofdh.m
Function files or function
An M-file that contains the word function at the beginning of the first line is a
function file. A function differs from a script in that arguments may be passed, and
variables defined and manipulated inside the file are local to the function and don’t
operate globally on the workspace.
5
Let us change the existing file fofdh.m into a function file. Open fofdh.m and save it
as coffeeTemperature.m.
function [t, y] = coffeeTemperature(h, n)
% Name: coffeeTemperature.m
% This MATLAB code is a function file, which
% cooling model.
%
% Input:
% h – scalar, time step size
% n – scalar the number of total iterations
% Output:
% t – an array of size n+1; it contains the
%
the temperature predictions occurs
% y – an array of size n+1; it contains the
is applied to Newton's law of
or time steps
time points at which
values of coffee temperatures
% setting up the parameters
y_sur = 70;
% room (surrounding) temperature
% initializing the time and coffee temperature arrays
y = zeros(n+1,1);
% set up a coffee temperature column array of size
n+1
y(1) = 200;
% initial temperature
t = zeros(n+1,1);
% set up a time column array of size n+1
% estimating the parameter c, insulation ability of the cup
h_obser = 5;
% time of observing the coffee temperature
y_obser = 100;
% observed coffeed temperature at time h_obser
c = (y_obser - y(1))/(h_obser * (y_sur - y(1)));
% calculating parameters a and b
a = 1-c*h;
b = c*h*y_sur;
% iteratively calculate the coffee temperature
for k = 1:n,
y(k+1) = a*y(k) + b;
t(k+1) = t(k) + h;
end
In the MATLAB command window, type the following
>>
>>
>>
>>
>>
clear;
h = 1;
n = 300;
[time, temp] = coffeeTemperature(h, n);
plot(time,temp);
Or you can put all the above commands in a script file call main_coffee.m, namely
% Name: main_coffee.m
h = 1;
n = 300;
[time, temp] = coffeeTemperature(h, n);
plot(time,temp);
And then in the MATLAB command window, type the command:
>> main_coffee
The advantages of doing so is to be able to save your time to type all the commands
every time when you try out the same experiment with different values of parameters.
6. Graphics
6
2D Graphics:
Elements plotting functions
%
%
%
%
%
%
%
%
%
%
%
%
%
%
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
plot
creates a plot of vectors or columns of matrices
loglog creates a plot using logarithmic scales for both axes
semilogx
creates a plot using a logarithmic scalars for the x-axi
and a linear scale for y-axis
semilogy
creates a plot using a logarithmic scalars for the y-axi
and a linear scale for x-axis
You can add tiles, axis, labels, grid lines, and text to your graph using
title
adds title to the graph
xlabel
adds a label to the x-axis
ylabel
adds a label to the y-axis
text
displays a text string at a specific location
gtext
places text on the graph using the mouse
grid
turns on grid lines
For examples
t = 0:pi/100:2*pi;
x = sin(t);
y1 = sin(t+0.25);
y2 = sin(t + .5);
plot(x, y1, ‘r-‘); hold on;
plot(x, y2, ‘g+’); hold off;
figure(2);
% open a new figure window labeled as 2
plot(x, y1, ‘r-‘, x, y2, ‘g+’);
title(‘Phase shift’);
xlabel(‘x = sin(t)’)
ylabel(‘y = sin(t+)’)
gtext(‘y1’); gtext(‘y2’)
% you can also manipulate the figure by selecting each object from the
% “edit” menu from the figure window.
% Plotting multiple figures in one window
>> figure(3);
>> subplot(2, 1, 1), plot(x, y1);
>> subplot(2, 1, 2), plot(x, y2);
3D Graphics:
Elements plotting functions
% plot3 - plots lines and points in 3-D
>> figure(4)
>> t = 0:pi/50:pi;
>> plot3(sin(t), cos(t), t);
% mesh, meshgrid - create 3D perspective plots of the matrix elements
% displayed a heights above the underlying mesh grid.
>> figure(5)
>> x = -8:.5:8;
>> y = x;
>> [X, Y] = meshgrid(x, y);
>> R = sqrt(X.^2 + Y.^2) + eps;
>> Z = sin(R)./R;
>> mesh(Z);
>> surf(Z);
% generates a colored faceted view of the surface
% contour, contour3 – create contour plots
>> figure(6)
>> contour(Z, 20)
>> contour3(Z, 20)
>> surfc(Z)
% image – display a matrix as an image by mapping the elements of the
7
%
>>
>>
>>
>>
matrix to the current color map.
figure(7)
image(log10(Z+1));
colormap(cool);
% choose a color map
axis equal;
% set axis to equal
Hope this will get you started on MATLAB. It really can do lots of amazing things for
you as you can find it out this winter. Enjoy using it!
Download