Beruflich Dokumente
Kultur Dokumente
Learning Objectives
familiarity with: MATLAB operations Simple Plotting MATLAB functions, scripts Complex numbers Matrices, vectors
MATLAB
Built in constants and variables ans eps i or j inf pi most recent answer small constant ~ 10-16 imaginary unit infinity 3.14159 ... Some common functions sin(x) cos(x) exp(x) sqrt(x) log(x) log10(x) abs(x) sine cosine exponential square root natural log log to base 10 absolute value, magnitude of complex quantity angle(x) phase angle real(x) real part of imag(x) imaginary part of
Standard mathematical operations * / ^ addition, subtraction multiplication division exponentiation e.g. yn = y^n
Comment line
>> % This is a comment >>
pi] ;
-1.0000
z = a + ib = Aei
A = z = a 2 + b2
= tan 1 ( b / a )
In MATLAB:
>> z =1 + 2*i; >> abs(z) ans = 2.2361
1.0
Simple plotting
>> >> >> x = linspace( 0, 2*pi, 100); y = cos(x); plot(x, y)
-1
or
>> >> >> >> >> >> >> x = linspace(0, 2*pi, 100); y1= cos(x); plot(x, y1) hold on y2 = sin(x); plot(x, y2) hold off
y1 dashed line
y2 dotted line
y3 dot-dash
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
length(x)
Warning: Divide by zero. >> >> >> x = x + eps*(x = = 0); y=sin(x)./x; plot(x,y)
0.8
0.6
0.4
0.2
-0.2
0.5
1.5
2.5
3.5
MATLAB Functions Functions are defined in the editor and saved as M-files. The name of the M-file is the name of the function with a .m extension, e.g. myfunction.m etc. As shown in the example below, functions can have multiple outputs (as well as multiple inputs). function [y , z] = test(x) y = x.^2; z = 10*exp(-x);
10 9 8 7 6 5 4 3 2 1 0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
All the variables appearing in a function are local to that function, i.e. they do not change any similarly named variables in the MATLAB workspace.
MATLAB Scripts A MATLAB script is a sequence of ordinary MATLAB statements, defined in the editor and then saved as a file.The file has the name of the script followed by a .m extension, e.g. myscript.m. Typing the script name at the MATLAB prompt then causes the script to be executed. Variables in the script change any values of variables of the same name that exist in the current MATLAB session.
% testscript x =linspace(0,2,100); y = x.^2; z = 10*exp(-x); plot(x,y,x,z) >> testscript
10 9 8 7 6 5 4 3 2 1 0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
MATLAB Matrices MATLAB was designed to perform operations with matrices very effectively. Entering matrices manually is as easy as vectors:
>> matrix = [ 4 0 3; 0 3 5; 357 ] 4 0 3 0 3 5 3 5 7
matrix =
returns number of rows, nr, and number of columns, nc, as a vector [nr , nc] trace of M (sum of diagonal terms) determinant of M transpose of M (interchange rows and columns)
size(matrix)
trace(matrix)
det(matrix)
matrix'
34 vt = v'
v*matrix*vt
Special matrices zeros(m,n) ones(m,n) eye(m,n) matrix of all zeros with m rows and n columns matrix of all ones with m rows and n columns identity matrix with m rows and n columns
1 1 1
0 1 0
Determining the eigenvectors and eigenvalues of a matrix M (For a real symmetric matrix the eigenvalues are real and the eigenvectors are real and orthogonal to each other) [eigenvects, eigenvals] =eig(M)
>> evects =
-0.8752 0.3507 0.3332 0.4783 0.7300 0.4881 0.0720 -0.5865 0.8067 evals = 3.7531 0 0 0 -1.0172 0 0 0 11.2641
Corresponding eigenvalues
Homework M.1 When a wave is incident on an interface at oblique incidence, the angle of the refracted wave is controlled by Snell's law (see Fig 1). Write a MATLAB function snells_law that takes as its input the refracted angle (in degrees) and the wave speeds in the two media and returns the required incident angle (in degrees), i.e. the calling sequence should look like ang_in =snells_law(ang_out, c1, c2) Take the two media to be water (c1 =1480 m/sec) and steel (c2 = 5900 m/sec). What are the incident angles for refracted angles of 0, 45, 70, and 90 degrees for this case? What happens if the incident angle was 15 degrees? M.2 Write a MATLAB script that generates 200 refracted angles ranging from 0 to 75 degrees and uses the function from problem 1 to generate the corresponding incident angles. The script should then plot the resulting incident angles versus the refracted angles. Snell's law c 1 1
2
sin 1 sin 2 = c1 c2
c2
Fig. 1