5. State-space analysis of LTI systems (Chapter 10). The organization of the book permits much flexibility in teaching the continuous-time and discrete-time concepts. The natural sequence of chapters is meant to integrate continuous-time and discrete-time analysis. It is also possible to use a sequential approach in which all the continuous-time analysis is covered first (Chapters 1, 2, 4, 6, 7, and 8), followed by discrete-time analysis (Chapters 3, 5, and 9). SUGGESTIONS FOR USING THIS BOOK The book can be readily tailored for a variety of courses spanning 30 to 45 lecture hours. Most of the material in the first eight chapters can be covered at a brisk pace in about 45 hours. The book can also be used for a 30-lecture-hour course by covering only analog material (Chapters 1, 2, 4, 6, 7, and possibly selected topics in Chapter 8). Alternately, one can also select Chapters 1 to 5 for courses purely devoted to systems analysis or transform techniques. To treat continuous- and discrete-time systems by using an integrated (or parallel) approach, the appropriate sequence of Chapters is 1, 2, 3, 4, 5, 6, 7, and 8. For a sequential approach, where the continuous-time analysis is followed by discrete-time analysis, the proper chapter sequence is 1, 2, 4, 6, 7, 8, 3, 5, and possibly 9 (depending on the time availability). Logically, the Fourier transform should precede the Laplace transform. I have used such an approach in the companion volume, Signal Processing and Linear Systems (Oxford, 1998). However, a sizable number of instructors feel that it is easier for students to learn Fourier after Laplace. Such an approach has an appeal because of the gradual progression of difficulty, in the sense that the relatively more difficult concepts of Fourier are treated after the simpler area of Laplace. This book is written to accommodate that viewpoint. For those who wish to see Fourier before Laplace, there is Signal Processing and Linear Systems. NOTABLE FEATURES The notable features of this book include the following: 1. Intuitive and heuristic understanding of the concepts and physical meaning of mathematical results are emphasized throughout. Such an approach not only leads to deeper appreciation and easier comprehension of the concepts, but also makes learning enjoyable for students. 2. Many students are handicapped by an inadequate background in basic material such as complex numbers, sinusoids, quick sketching of functions, Cramer's rule, partial fraction expansion, and matrix algebra. I have added a chapter that addresses these basic and pervasive topics in electrical engineering. Response by students has been unanimously enthusiastic. 3. There are more than 200 worked examples in addition to exercises (usually with answers) for students to test their understanding. There is also a large number of selected problems of varying difficulty at the end of each chapter. 4. For instructors who like to get students involved with computers, several examples are worked out by means of MATLAB, which is becoming a standard software package in electrical engineering curricula. There is also a MATLAB session at the end of each chapter. The problem set contains several computer problems. Working computer examples or problems, though not essential for the use of this book, is highly recommended. 5. The discrete-time and continuous-time systems may be treated in sequence, or they may be integrated by using a parallel approach. 6. The summary at the end of each chapter proves helpful to students in summing up essential developments in the chapter. 7. There are several historical notes to enhance student's interest in the subject. This information introduces students to the historical background that influenced the development of electrical engineering. ACKNOWLEDGMENTS Several individuals have helped me in the preparation of this book. I am grateful for the helpful suggestions of the several reviewers. I am most grateful to Prof. Yannis Tsividis of Columbia University, who provided his comprehensively thorough and insightful feedback for the book. I also appreciate another comprehensive review by Prof. Roger Green. I thank Profs. Joe Anderson of Tennessee Technological University, Kai S. Yeung of the University of Texas at Arlington, and Alexander Poularikis of the University of Alabama at Huntsville for very thoughtful reviews. Thanks for helpful suggestions are also due to Profs. Babajide Familoni of the University of Memphis, Leslie Collins of Duke University, R. Rajgopalan of the University of Arizona, and William Edward Pierson from the U.S. Air Force Research Laboratory. Only those who write a book understand that writing a book such as this is an obsessively time-consuming activity, which causes much hardship for the family members, where the wife suffers the most. So what can I say except to thank my wife, Rajani, for enormous but invisible sacrifices. B. P. Lathi MATLAB MATLAB is a sophisticated language that serves as a powerful tool to better understand a myriad of topics, including control theory, filter design, and, of course, linear systems and signals. MATLAB's flexible programming structure promotes rapid development and analysis. Outstanding visualization capabilities provide unique insight into system behavior and signal character. By exploring concepts with MATLAB, you will substantially increase your comfort with and understanding of course topics. As with any language, learning MATLAB is incremental and requires practice. This book provides two levels of exposure to MATLAB. First, short computer examples are interspersed throughout the text to reinforce concepts and perform various computations. These examples utilize standard MATLAB functions as well as functions from the control system, signal processing, and symbolic math toolboxes. MATLAB has many more toolboxes available, but these three are commonly available in many engineering departments. A second and deeper level of exposure to MATLAB is achieved by concluding each chapter with a separate MATLAB session. Taken together, these eleven sessions provide a self-contained introduction to the MATLAB environment that allows even novice users to quickly gain MATLAB proficiency and competence. These sessions provide detailed instruction on how to use MATLAB to solve problems in linear systems and signals. Except for the very last chapter, special care has been taken to avoid the use of toolbox functions in the MATLAB sessions. Rather, readers are shown the process of developing their own code. In this way, those readers without toolbox access are not at a disadvantage. All computer code is available online (http://www.mathworks.com/support/books). Code for the computer examples in a given chapter, say Chapter xx, is named CExx.m. Program yy from MATLAB Session xx is named MSxxPyy.m. Additionally, complete code for each individual MATLAB session is named MSxx.m. Roger Green cart2pol >> [z_rad, z_mag] = cart2pol(2, 3); >> z_deg = z_rad* (180/pi); >> disp(['(a) z_mag = ',num2str(z_mag),'; z_rad = ',num2str(z_rad), ... >> '; z_deg = ',num2str(z_deg)]); (a) z mag = 3.6056; z rad = 0.98279; z deg = 56.3099 >> [z_rad, z_mag] = cart2pol(-2, 1); >> z_deg = z_rad* (180/pi); >> disp(['(b) z_mag = ',num2str(z_mag),'; z_rad = ',num2str(z_rad), ... >> '; z_deg = ',num2str(z_deg)]); (b) z mag = 2.2361; z rad = 2.6779; z deg = 153.4349 pol2cart >> [z_real, z_imag] = pol2cart(-3*pi/4,4); >> disp (['z_real = ',num2str(z_real),'; z_imag = ',num2str(z_imag)]); z real = -2.8284; z imag = -2.8284 >> z_1 = 3+j*4; z_2 = 2+j*3; >> z_1z_2 = z_1*z_2; >> z_1divz_2 = z_1/z_2; >> disp(['z_1*z_2 = ',num2str(z_1 z_2),'; z_1/z_2 = ',num2str(z_1divz_2)]); z 1*z 2 = -6+17i; z 1/z 2 = 1.3846-0.076923i >> a= -3; b = 4; >> [theta,C] = cart2pol(a,-b); >> theta_deg = (180/pi)*theta; >> disp(['C = ',num2str(C),'; theta = ',num2str(theta),... >> '; theta_deg = ',nu,2str(theta_deg)]); C = 5; theta = -2.2143; theta deg = -126.8699 Q x F x m n workspace whos whos whos who clear clear clc clf save save load help. help help help help lookfor help lookfor lookfor print format exit i >> z = -3-j*4 z = -3.0000 - 4.0000i real imag >> z_real = real(z); z_imag = imag(z); z_real z_imag sqrt >> z_mag = sqrt(z_real^2 + z_imag^2) z_mag = 5 sqrt, conj >> z_mag = sqrt(z*conj(z)) z_mag = 5 abs j >> z_mag = abs(z) z_mag = 5 angle >> z_rad = angle(z) >> z_deg = angle(z)*180/pi pi atan2 >> z_deg = atan(z_imag,z_real) z_rad = -2.2143 cos sin tan cot acos asin atan asec acsc acot acosh asinh atanh asech acsch acoth angle sec csc cosh sinh tanh sech csch coth cos >> cos(j) ans = 1.5431 log10 log >> log(-1) ans = 0 + 3.1416i a: b: c c >> k = 0:2:11 k = 0 2 4 6 8 10 0: 2: 11 >> k = 11:-10/3:00 k = 11.0000 7.6667 4.3333 1.0000 >> k = 0:11 k = 0 1 2 3 4 5 6 7 8 9 10 11 >> k = 0:2; >> w = exp(j*(pi/3 + 2*pi*k/3)) w = 0.5000 + 0.8660i -1.0000 + 0.0000i 0.5000 - 0.8660i >> k = 0:99; >> w = exp(j*(pi/100 + 2*pi*k/100)); a b >> w(5) ans = 0.9603 + 0.2790i >> k(5) ans = 4 98:100 >> w(98:100) ans = 0.9877 - 0.1564i 0.9956 - 0.0941i 0.9995 - 0.0314i >> t = 0:0.2/500:0.2-0.2/500; >> f = sin(2*pi*10*t+pi/6); >> f(1) ans = 0.5000 f(1) plot >> plot(t, f); xlabel ylabel >> xlabel('t'); ylabel('f(t)') title plot >> plot(real(w),imag(w),'o'); o >> xlabel('Re(w); ylabel('Im(w)'); >> axis equal axis equal axis equal semilogx semilogy loglog plot image contour plot3 contour3 mesh >> g = exp(-10*t); >> h = f.*g; plot >> plot(t, f,'-k',t,h,':k'); >> xlabel('t'); ylabel('Amplitude'); >> legend('f(t)','h(t)'); -k :k surf m n ones(m,n) x diag(x) a: b: c >> r = [1 0 0] r = 1 0 0 >> A = [2 3; 4 5; 0 6] A = 2 3 4 5 0 6 >> c = r' c = 1 0 0 r. >> B = [c A] B = 1 2 3 0 4 5 0 0 6 (conj (r)) x eye(m) >> B(1, 2) ans = 2 >> B(1:2,2:3) ans = 2 3 4 5 B(2,:) >> B(2,:) ans = 0 4 5 >> A = [1 -2 3;-sqrt(3) 1 -sqrt(5);3 -sqrt(7) 1]; >> y = [1;pi;exp(1)]; >> x = inv(A)*y x = -1.9999 -3.8998 -1.5999 x = A\y det >> x1 = det([y,A(:,2:3)])/det(A) x1 = -1.9999 >> alpha = (0:10); >> t = (0:0.001:0.2)'; T >> T = t*ones(1,11); T >> H = exp(-T*diag(alpha)).*sin(2*pi*10*T+pi/6); T >> plot(t,H); xlabel('t'); ylabel('h(t)'); residue >> [R,P,K] = residue(B,A) B A R P K residue >> [R,P,K] = residue( [1 0 0 0 0 pi], [1 -sqrt(8) 0 sqrt(32) -4]) R = 7.8888 5.9713 3.1107 0.1112 P = 1.4142 1.4142 1.4142 -1.4142 K = 1.0000 2.8284 residuez residue residue repmat T = repmat(t,1,11) residuez sound det residue fr fi R R f = [f r; f i]; RRf RRRf u t t est M K K B M K x(t) q q y(t) ht x t x t x t x t x t x t est x t C ej t x t t x t t y y output output outputN filename(input input inputM variable = expression, statement,..., statement n un hn hn hn n k x k zn x n n x n C filename x t X s x t X s T ka a b b H s H s RC RC z X z z X n X z z h n H z z n z n z x n X z z z H S T z ha t hn H z Ha s z z z n z