Matlab Review
description
Transcript of Matlab Review
Important!
You must include comments in your programs you turn in - otherwise we will have great difficulty knowing what you are thinking and doing. You will have
difficulty knowing what you were doing if you need to reuse the programs.
Command Window- enter commands and data- print results
Graphics Window- display plots and graphs
Edit Window- create and modify m-files
MATLAB’s 3 Windows
Now we have seen Command Window, Graphics Window, and Edit Window
There is another window which is very useful:the Help Window
You can also type help in Command Window
e.g.,
help input
MATLAB’s basic component is a matrixi.e., all variables are treated as matrices
All operations are vectorized (optimized for vector use)
Loops run much slower in MATLAB than in Fortran (not a vector operation)
Scalar, vector, and matrix
Scalar: k = 511 matrix
Matrix:
864297534321
a
m n matrix
m rows (m = 3)n columns (n = 4)
231
c 4321b
14 matrix, or a row vector
Vector:
31 matrix, or a column vector
Variable• may consist up to 31 characters
• starting with a letter and followed by any combination of letters, digits, and underscores (Variable names must start with a letter)
• punctuation marks and spaces should not be included
e.g., CVEN_302, TIME, Time, time, velocity, force_x, force_y
• All numbers are double precision
• Text is stored as arrays of characters
• You don’t have to declare the type of data (defined when running)
• Variables are case sensitive
Data Type
e.g., CVEN_302, TIME, Time, time, velocity, force_x, force_y
Arithmetic operation of scalarsAddition: a+b subtraction: a-bmultiplication: a*b division: a/bexponentiation: a^b= ab
abs(x) : absolute value sqrt(x) : square root = x^(1/2)sin(x) : sine asin(x) : inverse sinesinh(x) : hyperbolic sine asinh(x) : inverse hyperbolic sinelog(x) : natural logarithm log10(x) : common logarithmexp(x) : exponental: ex (e = 2.7183….)
Elementary math functions
» a = 5;» b = 3;» a*bans =
15» d = ans * 3d =
45» e = ans * 3;» ee =
45» a^2ans =
25
» a/bans =
1.6667» format long» a/bans =
1.66666666666667» format short» a/bans =
1.6667
» exp(2)ans =
7.3891» 10^2ans =
100» log(100)ans =
4.6052» log10(100)ans =
2» pians =
3.1416
; - result not displayedformat long - 15 digitsformat short - 5 digitsans - result from previous calculationpi -
Ctrl-c : terminate a running program
2e
100ln
100log
Array Operations
• An array operation is performed element-by-element - Need “.” in front of the operator
B(5);A(5) C(5)B(4);A(4) C(4)B(3);A(3) C(3)B(2);A(2) C(2)B(1);A(1) C(1)
MATLAB: C = A.B;
Arithmetic operation of ArraysAddition: a+b subtraction: a-bmultiplication: a.*b division: a./bexponentiation: a.^b = ab
MATLAB variables and matrix operation
231
c 654b
» b = [4 5 6]b =
4 5 6» c = [1
32]
c =132
» c = [1; 3; 2]c =
132
» d = c'd =
1 3 2
- transpose
; - a new line
» b * cans =
31» b.*dans =
4 15 12» b./dans =
4.0000 1.6667 3.0000» f = [b; d; [3 6 8]]f =
4 5 61 3 23 6 8
231
c 231d
654b
b.*d = [4*1 5*3 6*2]b./d = [4/1 5/3 6/2]
bd[3 6 8]
» f(2,3)ans =
2» size(f)
size - size of a matrix
Matrix Operation (conti.)
497 ; 321 yx
497321 yxz
497
321 ; yxu
s = [1 2 3 4; 5 6 7 8]t = [1 2 3 4....
5 6 7 8]
continue
Colon Operator
Creating new matrices from an existing matrix
C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]
F = C(:, 2:3) = [2,5; 0,1; 2,-1; 1,4]
E = C(2:3,:) = [-1 0 1; 3 2 -1]
G = C(3:4,1:2) = [3,2; 0,1]
410123101521
C
123101
E
41121052
F
1023
G
all columns
rows 2 to 3
» x = 1:10x =
1 2 3 4 5 6 7 8 9 10» t = 1 : 2 : 10t =
1 3 5 7 9» k = 5:-1:-3k =
5 4 3 2 1 0 -1 -2 -3
a : step : b gives number from a to b with the specified step between elementsstep = 1 if not specified
What if the step is not easy to calculate, or is an odd number?
y = linspace (a, b, n_pts)
» y = linspace (0, 1, 4)y =
0 0.3333 0.6667 1.0000
2 end points are included in n_pts.
y = linspace (0,1)
a number of 100 for n_pts is assigned.
Some useful special matrices» eye (3)ans =
1 0 00 1 00 0 1
» ones (3)ans =
1 1 11 1 11 1 1
» ones (1,4)ans =
1 1 1 1
» zeros (2,3)ans =
0 0 00 0 0
eye (m,n) eye (n)ones (m,n) ones (n) zeros (m,n) zeros (n)
Plotting
plot (x, y) plot(x1, y1, x2, y2)
plot (x, y, ‘color symbol line style’)
» x = linspace(0, 2*pi);» y = sin (x);» z = cos (x);» plot (x, y)» plot (x, y, x, z)» figure (2)» plot (x, y, 'r o -'); grid on» hold on» plot (x, z, 'b x :')
red, circle, solid
blue, x-mark, dotted
figure or figure (#) : open a figure
try help plotadd grids
try grid off
» xlabel ('x')» ylabel ('y')» title ('sine and cosine')» text (2, 1, 'This is a sine fuction')» axis ([0 2*pi -2 2])» hold off
xlabel (‘ label ‘) ylabel (‘ label ‘)title (‘ title of the plot ‘)text ( x_location, y_location, ‘ text ‘)axis ([ x_min x_max y_min y_max ])
Plotting (continue)
- text string
hold on: hold the plots to avoid overwriting
subplot ( m, n, figure number ) - break the figure window into m by n small figures, and plot the specified figure
Plotting (continue)
» figure» subplot (3, 2, 1)» plot (x, y)» subplot (3, 2, 2)» plot (x, z)» subplot (3, 2, 4)» plot (x, y-z)
1 23 45 6
semilogx (x, y) logarithmic scales for the x axis.
semilogy (x, y) logarithmic scales for the y axis.
loglog (x, y) logarithmic scales for the x and y axes
x = 10.^[-1:0.1:2];y = exp(x);figure(1)semilogy(x,y,':^')
figure(2)loglog(x,y,'-s')grid on
More control on plotting
get(H) get object propertiesset(H,'PropertyName',PropertyValue,...)
set object properties
figure(2)h = loglog(x,y,'-sr')grid on
get(h)set(h, 'LineWidth',2)set(h, 'MarkerFaceColor', [0 0 1])
who list of current variablesclc clear the command windowclf clear the graphical windows clear x clear the variable xclear all clear all variablesclose close the current figureclose all close all figurescd y:\cven302\ change directorydir list all fileswhat list all m-filesCTRL-C Abort
semicolons (;) at the end of line: Calculation results will not be displaced on the command window
Some useful commands
Initializing Variables• Explicitly list the values• reads from a data file• uses the colon “:” operator• reads from the keyboard
Input and output (I/O)a = input (‘ enter a value or string ‘)
- wait for input from the keyboard
load file_name- input an existing data file (ASCII format)
diary file_name- save anything in the Command Window
diary off
save file_name variable(s) -ascii- save the data of the variable(s) to a file in ASCII format
You may need to go to certain directory before loading and/or saving files
M-Files: Scripts and Functions
• You can create and save code in text files using MATLAB Editor/Debugger or other text editors (called m-files since the ending must be .m)
• M-file is an ASCII text file similar to FORTRAN or C source codes ( computer programs)
• A script can be executed by typing the file name, or using the “run” command
Functionsdistinguished from the script that the first line is of the form
function x = function_name (input arguments)
function [x, y] = function_name (input arguments)
A function has to be stored as a stand-alone file ended with “.m”. The name of the function is usually (but not necessary) the same as the name of the file.
Difference between scripts and functionsScripts share variables with the main workspaceFunctions do not
z = 0;for i = 1:10
y(11-i) = i;z = z+i;
end
For Loopsfor x = array
commandsend
» yy =
10 9 8 7 6 5 4 3 2 1» disp(z)
55
Without this line you will get:Warning: Reference to uninitialized variable z.
disp (x) - display the value of x
Filename: lec2a.m
% Find sum of 1 to b% Comments begin with “%”% cd y:\cven302\clear allsum = 0;b = input('what is the value of b? ')for i = 1 : b
sum = sum + iend
While Loopswhile expression
commandsend
eps = 1;count = 0;while (1+eps) > 1
eps = eps/2;count = count + 1;
endeps = eps*2display(count-1)
Floating point relative accuracy
(is true)
Determining machine epsilon
52 digits in double precision (64 bit)
eps =2.2204e-016
ans =52
If-Else Structuresif expression (is true)
commandsend
if expression 1commands 1
elseif expression 2commands 2
elseif expression 3commands 3::
elsecommands n
end
if expressioncommands 1
elsecommands 2
end
Relational Operators< less than<= less than or equal to> greater than>= greater than or equal to== equal to~= not equal to
Logical Operators& and| or~ not
eps = 1;count = 0;while (1+eps) > 1
eps = eps/2;count = count + 1;if count > 100
breakend
endeps = eps*2display(count)
eps = 1;count = 0;while (1+eps) > 1 & count < 100
eps = eps/2;count = count + 1;
endeps = eps*2display(count)
a = input('what is the value of input data? ')if a > 0
sign = 1;elseif a < 0
sign = -1;else
sign = 0;end
disp(sign)
print - print out current figure
print -djpeg filename - save current figure in jpeg format
print -djpeg# filename - save current figure in jpeg format with # (resolution level) between 0 and 100 (default 75)
print -dtiff filename - save current figure in tiff format
print -dpsc filename - save current figure in color PostScript format
Print figures to image files
See help print for more