MATLAB Tutorial PDF
MATLAB Tutorial PDF
MATLAB Fundamentals Plotting Figures M-files ODE Solver Building Control Systems Time Response Root Locus Frequency Response / Bode Plot SIMULINK
Getting Started
Starting MATLAB Click the MATLAB icon on Windows to start MATLAB command window, which gives an interactive interface. The top menu bar can be used to open or write a M-file, which will be addressed later. Once started, MATLAB will provide some introductory remarks and pop up the MATLAB prompt >>. Help Facility By typing help, help <topics>, you can get on-line help. help HELP topics: matlab\general matlab\ops matlab\lang matlab\elmat matlab\elfun matlab\specfun matlab\matfun matlab\datafun matlab\polyfun matlab\funfun matlab\sparfun help ode23 ODE23 Solve non-stiff differential equations, low order method. [T,Y] = ODE23('F',TSPAN,Y0) with TSPAN = [T0 TFINAL] integrates the system of differential equations y' = F(t,y) from time T0 to TFINAL with initial conditions Y0. 'F' is a string containing the name of an ODE file. Function F(T,Y) must return a column vector. Each row in solution array Y corresponds to a time returned in column vector T. To obtain solutions at specific times T0, T1, ..., TFINAL (all increasing or all decreasing), use TSPAN = [T0 T1 ... TFINAL]. Saving working space Terminating a MATLAB session deletes the variables in the workspace. Before quitting, you can save the workspace for later use by typing save, which saves the workspace as matlab.mat. You can save with other filenames or to save only selected variables. save temp x y - General purpose commands. - Operators and special characters. - Programming language constructs. - Elementary matrices and matrix manipulation. - Elementary math functions. - Specialized math functions. - Matrix functions - numerical linear algebra. - Data analysis and Fourier transforms. - Interpolation and polynomials. - Function functions and ODE solvers. - Sparse matrices.
which saves the current variable x, y into temp.mat. To retrieve all the variables from the file named temp.mat, type load temp Exit Exit MATLAB by typing quit or exit
Fundamental Expressions/Operations
MATLAB uses conventional decimal notion, builds expressions with the usual arithmetic operators and precedence rules: x = 3.421 x= 3.4210 y = x+8.2i y= 3.4210 + 8.2000i z = sqrt(y) z= 2.4805 + 1.6529i p = sin(pi/2) p= 1 Matrix Operations Matrix operations are fundamental to MATLAB. Within a matrix, columns are separated by space, and the rows are separated by semicolon;. For example
A = [1 2 3; 4 5 6; 7 8 9] A= 1 4 7 2 5 8 3 6 9
The following matrix operations are available in MATLAB: + * ^ \ / addition subtraction matrix multiplication power transpose left division right division
The operations, , ^, \, and /, can be made to operate entry-wise by preceding them by a period. Building Matrix Convenient matrix building functions are
eye identity matrix zeros matrix of zeros ones matrix of ones diag diagonal matrix triu upper triangular part of a matrix tril lower triangular part of a matrix rand randomly generated matrix For example, A = eye(3) A= 1 0 0 0 1 0 0 0 1
B = zeros(3,2) B= 0 0 0 0 0 0
C = rand(3,1) C= 0.9501 0.2311 0.6068 Matrices can be built from blocks. For example, D = [A B C D] D= 1.0000 0 0 0 1.0000 0 0 0 1.0000 0 0 0 0 0 0 0.9501 0.2311 0.6068
D(:,6) ans = 0.9501 0.2311 0.6068 D(1, :) ans = 1.0000 D(1,6) ans = 0.9501 Other functions for colon notation: E = 0.3:0.4:1.5 E= 0.3000 0.7000 1.1000 1.5000 0 0 0 0 0.9501
Vector Functions Certain functions in MATLAB are vector functions, i.e., they operate essentially on a vector (row or column). For example, the maximum entry in a matrix D is given by max(max(D)). max(D) ans = 1.0000 1.0000 1.0000 0 0 0.9501
max(max(D)) ans = 1 A few of these functions are: max, min, sort, sum, prod, mean, std, any, all.
Matrix functions The most useful matrix functions are eig svd inv det size norm cond rank For example F = rand(3,3) F= 0.4860 0.8913 0.7621 eig(F) ans = 1.7651 0.0310 -0.4997 rank(F) ans = 3 cond(F) ans = 69.1503 inv(F) ans = 0.4565 0.0185 0.8214 0.4447 0.6154 0.7919 eigenvalues and eigenvectors singular value decomposition inverse determinant size 1-norm, 2-norm, F-norm condition number in the 2-norm rank
Plotting Figures
Creating a Figure If y is a vector, plot (y) produces a linear graph of the elements of y versus the index of the elements of y. If you specify two vectors as arguments, plot(x,y) produces a graph of y versus x. t = 0:pi/100:2*pi; x = sin(t); y1 = sin(t+0.25); y2 = cos(t-0.25); figure(1) % open a figure and make it current, not necessarily plot(x,y1,'r-',x,y2, 'g--') title('sin-cos plots') xlabel('x=sin(t)') ylabel('y')
1 sin-cos plots
0.5
-0.5
-1 -1
-0.5
0 x=sin(t)
0.5
By plotting multiple figures on the graph, one alternative way is to use hold on and hold off commands, plot(x,y1, 'r-') hold on 8
plot(x,y2, 'g--') hold off Other types of plots: loglog plot using logarithmic scales for both axes semilogx plot using a logarithmic scales for x-axis and linear scale for the y-axis semilogy figure out yourself Line styles, markers, and color Symbol y m c r g b w k Color yellow magenta cyan red green blue white black Symbol . o x + * : -. -Linestyle point circle x-mark plus star solid dotted dashdot dashed
Exporting a Figure 1) Cut and paste: click Edit at the top menu bar of the figure window, then click Copy Figure, paste the figure wherever you want. 2) Save as a file: print tiff deps (print as a postscript file). Type help print to find out more options.
M-files
MATLAB can execute a sequence of statements in a file. Such files are called M-files because they must have the file type of .m as the last part of their filename. There are two types of M-files: script files and function files. Script files A script file consists of a sequence of normal MATLAB statements. For example, type all the commands for generating the figure into a single script file and save as sineplot.m. Then the MATLAB command sineplot will cause the statements in the file to be executed. Try it. Function files
You can create new functions specific to your problem, which will then have the same status as other MATLAB functions. Variables in a function files are by default local, otherwise need to be declared as global. The function file will start with function [y1, y2, ..] = Function Name (x1, x2, ) Here is a simple example. The file myrand.m contains the statements function x = myrand(l, u, row, col) % generate uniformly-distributed random number matrix (row, col) between low% bound l and upper-bound u. x = l + rand(row, col).* (u-l); We would like to generate a 2 by 3 random matrix between 1.5 and 4.5 a = myrand(1.5, 4.5, 2, 3) a= 4.2654 3.7146 2.0288 2.7171 4.3064 4.2507
10
First transform a high-order differential equation into a set of first-order differential equations. Then create a function M-file containing these differential equations. For example,
2 & x1 = x1 (1 x 2 ) x 2 & x 2 = x1
Create a file called vdpol.m, function xdot = vdpol(t,x) xdot = zeros(2,1); xdot(1) = x(1).*(1-x(2).^2)-x(2); xdot(2) = x(1); To simulate the differential equation defined in vdpol over the interval [0,20], invoke ode23 t0 = 0; tf = 20; x0 = [0 0.25]; % Initial conditions [t,x] = ode23(vdpol, [t0 tf], x0); plot (t, x)
3
-1
-2
-3
10
12
14
16
18
20
Type help ode23 to find out all the other options. SIMULINK is a comprehensive extension to MATLAB for the simulation of differential equations, we will address it later on.
11
G ( s) =
You can create G(s) using TF in MATLAB, num = 5*[1 5.3]; den = conv([1 2.1], [1 15]); sys_1 = TF(num, den) Transfer function: 5 s + 26.5 ------------------s^2 + 17.1 s + 31.5 For SISO models, num and den are row vectors listing the numerator and denominator coefficients in descending powers of s by default.
Creating state space model Create state-space models in MATLAB is analogous to creating transfer function. Type in A, B, C, D matrices and use command SS,
A = [-23.5 -13.1 -4.5; 1.8 0 0; 0 1 0]; B = [1 0 0]'; C = [ 0 18 23]; D = 0; sys_2 = SS(A, B, C, D) a= x1 x2 x3 b= x1 x2 x3 u1 1 0 0 x1 -23.5 1.8 0 x2 -13.1 0 1 x3 -4.5 0 0
12
c= y1 d= y1 u1 0 x1 0 x2 18 x3 23
Transformation between transfer function and state-space models It is easy to transform a transfer function model into a state-space model, or vice versa.
1) Transform sys_1 from transfer function model to state-space model sys_1_ss = SS(sys_1) a= x1 x2 b= x1 x2 c= y1 d= y1 u1 0 x1 1.25 x2 0.82813 u1 4 0 x1 -17.1 8 x2 -3.9375 0
2) Transform sys_2 from state-space model into transfer function model sys_2_tf = TF(sys_2) Transfer function: 32.4 s + 41.4 -----------------------------s^3 + 23.5 s^2 + 23.58 s + 8.1
13
Other commands on building models and extract data from a model zpk - Create a zero/pole/gain model. ssdata - Extract state-space matrices. zpkdata - Extract zero/pole/gain data. tfdata - Extract numerator(s) and denominator(s).
Step Response 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 0 1 2 3 Time (sec.) 4 5 6
The other commands are impulse for impulse response initial -- for initial response Type help to figure out how to use them.
Amplitude
14
15
-15
10
10
10
Frequency (rad/sec)
SIMULINK
SIMULINK is a program for simulating dynamic systems. It has two phases of use: model definition and model analysis. Model definition uses the metaphor of a block diagram, which is much like drawing a block diagram. Instead of drawing the individual blocks, blocks are copied from libraries of blocks. After you define a model, you can analyze it either by choosing options from the SIMULINK menus or by entering commands in MATLABs command window. The progress of a simulation can be viewed while the simulation is running, and the final results can be made available in the MATLAB workspace when a simulation is complete. Open the SIMULINK block library by entering the command simulink in the MATLAB command window. This command displays a new window containing icons for the subsystem blocks
In1 Out1
Sinks
Discrete
Linear
Nonlinear
Connections Demos
Simulink Block Library 2.2 Copyright (c) 1990-1998 by The MathWorks, Inc.
Select New from the File menu on its menu bar to open a new empty window labeled Untitled, you can rename it when you save it. The new window is where you construct your system model by dragging blocks from their original location to the new window. Notice that when you drag a block to a different window you drag only a copy of the block. 16
Example: Building a simple SIMULINK model for a spring-mass-damper system with nonlinear friction. The spring-mass-damper system is taken from the text book, Dynamic modeling and control of engineering systems, Figure 6.6 on Pg. 137. Open libraries and copy blocks into your model window Click the window containing icons for subsystem blocks to make it active. Double click Sources, and then drag Step block into your model window from the Source library. Double click Linear, and then drag Sum into your model window from the Linear library. Double click Sum, change list of signs to +-. Copy two Gain blocks from the Linear library to your model window, rename one into Stiffness, and one to 1/m. Click the block Stiffness, select flip block from the Format menu to flip the orientation of the block Stiffness. Copy two Integrators blocks from the Linear library to your model window, rename one as Velocity and one as Displacement. Double click Nonlinear, and then drag Coulomb block to your model window from the Nonlinear library. Double click Sink, and then drag Scope block to your model window from the Sink library, rename the block as Monitor output. Draw lines to connect the blocks Draw lines to connect the blocks by moving the mouse pointer over a blocks port and holding down the left mouse button. Making a split flow from a connection line is done by pressing the right mouse button and drag the new connection.
Change block parameters Double click Step, set step time as 0.1, initial value as 0, and final value as 2.
17
Double click Stiffness, set the gain value as 1.0. Double click 1/m block, set the gain value as 1.0. Double click Coulomb friction, set offset as 0.5 and gain as 1.8. Double click Monitor output, click the properties button next to the print button, set Ymax as 2.5, and Ymin as 0.5. Go back to the model window, select Parameters from the Simulation menu. Set simulation time: start time = 0.0, and stop time = 5.0
Save the system by selecting Save from the File menu Run a simulation by selecting Start from the Simulation menu While the simulation is running, the Start menu item becomes Stop. If you select Stop, the menu displays Start again. Click the Monitor output block to monitor your system output
Simulation from the Command Line Any simulation run from the menu can also be run from the command line. For example, use the command [t, x, y] = rk45(model, [tstart, tfinal]); where model is the name of the block diagram system you build. Other Ways to View Output Trajectories Besides using the Scope block, output trajectories from SIMULINK can be plotted by Return variables and the MATLAB plotting commands Using Workspace blocks and the MATLAB plotting commands.
18
References
1) MATLAB Users Guide, the MathWorks Inc. 2) SIMULINK Users Guide, the MathWorks Inc. 3) Leonard, N. E. and W. S. Levine, Using MATLAB to Analyze and Design Control Systems, The Benjamin/Cummings Publishing Company, Inc. 4) Sigmon, K., MATLAB Primer, Department of Mathematics, University of Florida.
19