Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments
Numbers in MATLAB
There are three kinds of numbers used in MATLAB: integers real numbers complex numbers Integers are entered without the decimal point xi = 10 xi = 10 However, the following number xr = 10.01 xr = 10.0100 (5) (4)
is saved as the real number. Variables realmin and realmax denote the smallest and the largest positive real numbers inMATLAB. For instance, realmin ans = 2.2251e-308 Complex numbers in MATLAB are represented in rectangular form. The imaginary unit -1 is denoted either by i or j i ans = 0 + 1.0000i In addition to classes of numbers mentioned above, MATLAB has three variables representing the nonnumbers: -Inf Inf NaN (7) (6)
The Inf and Inf are the IEEE representations for the negative and positive infinity, respectively. Infinity is generated by overflow or by the operation of dividing by zero. The NaN stands for the not-a-number and is obtained as a result of the mathematically undefined operations such as 0.0/0.0 or -
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments
Workspace in MATLAB
All variables used in the current MATLAB session are saved in the Workspace. You can view the content of the Workspace by typing whos in the Command Window. For instance, whos Name ans fun s xi xr Size 1x1 1x1 1x1 1x1 1x1 Bytes Class Attributes (8)
MATLAB HELP
One of the nice features of MATLAB is its help system. To learn more about a function you are to use, say abs, type in the Command Window help abs ABS Absolute value. ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X. See also sign, angle, unwrap, hypot. Overloaded methods: frd/abs distributed/abs iddata/abs sym/abs Reference page in Help browser doc abs If you do not remember the exact name of a function you want to learn more about use command lookfor followed by the incomplete name of a function in the Command Window. Now in the command window type Help colon Make sure you understand how the colon operator works (9a) (9)
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments To enter a statement that is too long to be typed in one line, use three periods, , followed by Enter or Return. For instance, x = sin(1) - sin(2) + sin(3) - sin(4) + sin(5) -... sin(6) + sin(7) - sin(8) + sin(9) - sin(10) (9b) x= 0.7744 You can suppress output to the screen by adding a semicolon after the statement u = 2 + 3; (9c)
MATLAB as a calculator
List of basic arithmetic operations in MATLAB include Operation addition subtraction multiplication division exponentiation Symbol + * / ^
Observe the output of the following expressions pi*pi 10 sin(pi/4) ans 2 %<--- "ans" holds the last result x = sin( pi/5 ); cos( pi/5 ) %<--- assigned to what? y = sqrt( 1 - x*x ) ans On complex number, the basic operations are supported. Try the following: z = 3 + 4i, w = -3 + 4j real(z), imag(z) abs([z,w]) %<-- Vector constructor conj(z+w) angle(z) exp( j*pi ) exp(j*[ pi/4, 0, -pi/4 ]) (15) (16) (17) (18) (19) (20) (21) (8) (9) (10) (11) (12) (13) (14)
Matrices/vectors in MATLAB
In MATLAB everything is a matrix. A simple x = 4 is a 1x1 matrix.
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments (a) Make sure that you understand the colon notation. In particular, explain in words what the following MATLAB code will produce jkl = 0 : 6 jkl = 2 : 4 : 17 jkl = 99 : -1 : 88 ttt = 2 : (1/9) : 4 tpi = pi * [ 0:0.1:2 ]; (22) (23) (24) (25) (26)
(b) Extracting and/or inserting numbers into a vector is very easy to do. Consider the following definitionof xx: xx = [ zeros(1,3), linspace(0,1,5), ones(1,4) ] xx(4:6) size(xx) length(xx) xx(2:2:length(xx)) Explain the results echoed from the last four lines of the above code. (c) Observe the result of the following assignments: yy = xx; yy(4:6) = pi*(1:3) EXERCISE 1: Now write a statement that will take the vector xx defined in part (b) and replace the even indexed elements (i.e., xx(2), xx(4), etc) with the constant (pi raised to the power pi). Use a vector replacement, not a loop. End of Exercise 1 (32) (27) (28) (29) (30) (31)
Experiment with vectors in MATLAB. Think of the vector as a set of numbers. Try the following: xk = cos( pi*(0:11)/4 ) %<---comment: compute cosines (33)
Explain how the different values of cosine are stored in the vector xk. What is xk(1)? Is xk(0) defined? NOTES: the semicolon at the end of a statement will suppress the echo to the screen. The text following the % is a comment; it may be omitted.
EXERCISE 2 Loops can be written in MATLAB, but they are NOT the most efficient way to get things done. Its better to always avoid loops and use the colon notation instead. The following code has a loop that computes values of the cosine function. (The index of yy() must start at 1.) Rewrite this computation without using the loop (follow the style in the previous part).
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments
yy = [ ]; %<--- initialize the yy vector to be empty for k=-5:5 yy(k+6) = cos( k*pi/3 ) end yy
Explain why it is necessary to write yy(k+6). What happens if you use yy(k) instead? End of Exercise 2
Plotting in MATLAB
Plotting is easy in MATLAB for both real and complex numbers. The basic plot command will plot a vector y versus a vector x connecting successive points by straight lines. Try the following: x = [-3 -1 0 1 3 ]; y = x.*x - 3*x; plot( x, y ) z = x + y*sqrt(-1) plot( z ) %<---- complex values: plot imag vs. real (34) (35) (36) (37) (38)
Use help arith to learn how the operation xx.*xx works when xx is a vector; compare to matrix multiply.
Exercise 3: Go to File New M file. MATLAB editor will open up. Enter the following code in the editor and then save the file as mylab1.m tt = -1 : 0.01 : 1; xx = cos( 5*pi*tt ); zz = 1.4*exp(j*pi/2)*exp(j*5*pi*tt); plot( tt, xx, b-, tt, real(zz), r-- ), grid on %<--- plot a sinusoid title(TEST PLOT of a SINUSOID) xlabel(TIME (sec)) Now go to Command Window and type mylab1 type mylab1 %<---will run the commands in the file %<---will type out the contents of % mylab1.m to the screen
Explain why the plot of real(zz) is a sinusoid. What is its phase and amplitude ? Make a calculation of the phase from a time-shift measured on the plot. End of Exercise 3
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments Exercise 4 Generate a time vector (tt) to cover a range of t that will exhibit approximately two cycles of the 4000 Hz sinusoid. Use a definition for tt similar to that in Exercise 3. If we use T to denote the period of the sinusoids, define the starting time of the vector tt to be equal to T, and the ending time as +T. Then the two cycles will include t = 0. Finally, make sure that you have at least 25 samples per period of the sinusoidal wave. In other words, when you use the colon operator to define the time vector, make the increment small enough to generate 25 samples per period. Make a plot of both signals over the range of T t T. You may use arbitrary amplitude and phase for generating the 4000 Hz sinusoid. End of Exercise 4
IMPORTANT
1. You must show completed exercises to the instructor during lab time and get the attached sheet signed by the instructor. Submit the sheet to the instructor before leaving. 2. A report of this lab will be due at the start of next lab. Include a discussion of the exercises in the report.
School of Electrical Engineering and Computer Science Digital Signal Processing: Lab Experiments
INSTRUCTOR VERIFICATION SHEET LAB number:___________________ Class: __________ Name:________________________________ Name:________________________________ Name:________________________________ Exercise 1: Verified:_______________________________ Exercise 2: Verified:_______________________________ Exercise 3: Verified:_______________________________ Exercise 4: Verified:_______________________________ Date/Time:_______________ Date/Time:_______________ Date/Time:_______________ Date/Time:_______________ Date of LAB:______________ Section:________ Reg #:____________ Reg #:____________ Reg #:____________