Lab #04 - the GMU ECE Department
Transcription
Lab #04 - the GMU ECE Department
George Mason University Signals and Systems I Spring 2015 Laboratory Project #4 Assigned: March 18, 2015 Due Date: Laboratory Section on Week of April 06, 2015 Lab Report Your report for this lab will consist of all the analytical (i.e, pencil/paper) work, MATLAB plots and code, and relevant explanations. Each student must do his or her own work on this lab. However, you may ask other students or any of the teaching staff for advice. 1 Prelab We have seen that an important class of linear time-invariant systems is one in which the input and output are related by a linear constant coefficient differential equation, such as d2 y(t) dy(t) +2 + 2y(t) = x(t) dt2 dt or, more generally, N X k=0 M dk y(t) X dk x(t) ak = bk dtk dtk (1) k=0 We have also seen that if the input to a linear time-invariant system is an exponential, x(t) = est where s = σ + jω is a complex number, then the output will be an exponential of exactly the same form, but scaled by a complex number whose value depends on s and the impulse response of the system, h(t). More specifically, the output is y(t) = H(s)est where Z∞ H(s) = h(t)e−st dt −∞ is the system function. Thus, exponentials are eigenfunctions of linear time-invariant systems. In the special case when s = jω, x(t) is a complex exponential of frequency ω, x(t) = ejωt and y(t) = H(jω)ejωt In this case, Z∞ H(jω) = −∞ h(t)e−jωt dt and H(jω) is called the frequency response of the system (filter). Clearly, H(jω) may be found from the system function by setting s = jω, H(jω) = H(s) s=jω For an LTI system described by a LCCDE of the form given in Eq.(1), we have seen that H(s) is a ratio of polynomials M X H(s) = sM sM −1 B(s) bM + bM −1 + · · · + b1 s + b0 = k=0 = N A(s) aN sN + aN −1 sN −1 + · · · + a1 s + a0 X bk sk ak sk k=0 where the coefficients ak and bk are the coefficients of the differential equation. From this, the frequency response is found by setting s = jω. The magnitude of H(jω) at a given frequency ω tells us how much a complex exponential is attenuated or amplified in amplitude, and the phase (angle) of H(jω) indicates how much the complex exponential is shifted in phase (delayed or advanced in time). MATLAB has a number of useful m-files to find and plot the frequency response of a system and to filter signals. One of these that you will be using in this lab is freqs, which returns the frequency response H(jω) of a continuous-time system that is specified by the coefficients ak and bk in the numerator and denominator polynomials of H(jω). For example, if we have a linear time-invariant system defined by the LCCDE d3 y(t) d2 y(t) dy(t) + 2 +2 + y(t) = x(t) 3 2 dt dt dt and if we enter the following commands in MATLAB , >> a = [1 2 2 1]; b = [1]; >> w=linspace(0,5,100); >> H=freqs(b,a,w); then H will contain the values of the frequency response in rad/s at the frequencies specified by the vector w. In this case, H contains 100 samples of H(jω) within the range 0 ≤ ω ≤ 5 rad/s. The magnitude of the frequency response may then be plotted as follows, >> plot(w,abs(H)) >> xlabel(’Frequency (rad/s)’) >> ylabel(’|H(j\omega)|’); and the plot will be as shown in Figure 1. There are other ways to use MATLAB and these may be found by typing help freqs. Other useful MATLAB functions that you will be using in this lab that you have used before include tf(b,a), impulse(sys,tfinal,dt), and lsim(sys,u,t,x0). Again, for documentation on any of these use the help function. 1 |H(jω)| 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 3 Frequency (rad/s) 3.5 4 4.5 5 Figure 1: Plot of the magnitude of the frequency response of a filter with coefficients b=[1] and a=[1 2 2 1] . 2 De-Noising a Trumpet Signal Noise may be defined as an unknown and undesired signal, n(t), that is added to a desired signal x(t), i.e., y(t) = x(t) + n(t) An important application of signal processing is to reduce the noise in y(t) by filtering out as much of the noise as possible. Of course, in able to do so, something must be known about the properties of the noise and/or the signal. In this lab, you will investigate how one might remove additive noise from a trumpet signal. (a) Load lab04.mat into MATLAB . In this file will will find the following two signals: 1. trumpet 2. trumpet_n1: The file trumpet contains the waveform of a trumpet playing the note middle C, which is nominally 261.626 Hz. The file trumpet_n1 contains recordings of the trumpet playing middle C with additive noise corrupting the signal. Use soundsc to listen to both of these files. The noise should be clearly audible in trumpet_n1. Note that the sampling rate for both signals is 44.1 kHz, so to listen to these sounds properly, you need to specify to correct sampling frequency as follows, >> fs=44100; >> soundsc(trumpet,fs) (b) We have seen that a trumpet has ten or more significant harmonics. Shown in Fig. (2) is the spectrum of the trumpet playing middle C in the absence of any noise. This plot was generated from trumpet as follows, >> L=2^(18); >> V1=abs(fft(trumpet,L)); >> trumpet_spec=V1(1:L/2); Trumpet C4 (Middle C) Spectral Magnitude 1000 800 600 400 200 0 500 1000 1500 Frequency (Hz) 2000 2500 3000 Figure 2: Magnitude of the spectrum for a trumpet as a function of frequency in Hz. The array trumpet_spec contains N = 217 equally spaced samples of the magnitude of the spectrum between f = 0 and f = 22.05 kHz. Fig. (2) shows a plot of the spectrum of the trumpet for frequencies between zero and 3000 Hz. This plot was generated as follows, >> >> >> >> >> >> >> ff=(fs/2)*linspace(0,1,L/2); plot(ff,trumpet_spec) axis tight; xlim([0 3000]); title(’Trumpet C4 (Middle C)’); xlabel(’Frequency (Hz)’); ylabel(’Spectrum Magnitude’); Find the magnitude of the spectrum of the noise-free trumpet trumpet and the noisy trumpet trumpet_n1, and make a properly labeled plot of each for frequencies in the range 0 ≤ f ≤ 5000 Hz1 and make sure that your x-axis is labeled in Hz. Compare the spectrum of the noisy and the noise-free trumpet signals and describe what you observe. (c) The MATLAB command >> [b,a]=butter(N,wc,’s’); creates an LTI system that is defined by an N th-order differential equation of the form N X dk y(t) ak = x(t) dtk k=0 Plot magnitude of the frequency response of the LTI system that is designed using butter with N=9 and wc=2*pi*3000 as follows: >> w=2*pi*ff; >> wc=2*pi*3000; 1 Note that this is over a larger frequency range than the one shown in Fig. (2). >> >> >> >> >> >> >> [b,a]=butter(9,wc,’s’); H=freqs(b,a,w); plot(ff,abs(H)); grid on; axis tight; xlim([0 10000]); title(’Butterworth (LP) Filter’); xlabel(’Frequency (Hz)’); ylabel(’|H|’); What happens as you increase and decrease the value of wc used in the call to butter? (d) As we see from the results of part (c), the filter that is designed using butter is a lowpass filter because it passes, with very little attenuation, frequencies in x(t) that are small compared to the cutoff frequency wc, and it attenuates those frequencies in x(t) that are large compared to wc. With your filter that you designed in part (c) with wc=2*pi*3000, use the MATLAB commands tf and impulse to find the impulse response h(t), of your filter. Note that it is important to make sure that the sampling period is specified when you make the call to impulse, such as >> th=0:1/fs:0.2; >> h=impulse(sys,th); Plot of h(t) for 0 ≤ t ≤ 5 msec and make sure that your plot is properly labeled. (e) Filter the noisy trumpet signal trumpet_n1 with your filter h designed in part (d) using conv and listen to the output. Describe what you hear. Compare the signal trumpet and your filtered noisy trumpet signal in the time domain and frequency domain and comment on what you observe. Note: In order to make it clear what the differences are, if any, between the original trumpet, the noisy trumpet, and the filtered trumpet signals, plot these signals over a range of time no longer than 25 msec and make sure that you look within an interval where the trumpet is playing. (f) Experiment with the cutoff frequency wc in your filter and describe the differences in the filtered trumpet signals. Is there any particular value for wc that seems to be the best? (g) Can you think of another type of filter that might do a better job in removing the noise than the one you designed in part (c) using butter?