<< Chapter < Page Chapter >> Page >

Try looking at the frequency content of a few other signals. Note that the fall signal happens to have an even length, so N/2 is an integer. If the length is odd, you may have indexing problems, so it is easiest to just omit the last sample, as in x=x(1:length(x)-1); .

After you make modifications of a signal in the frequency domain, you typically want to get back to the time domain. The MATLAB command ifft will accomplish this task. >>xnew = real(ifft(X)); You need the real command because the inverse Fourier transform returns a vector that is complex-valued, since some changes that you make in the frequence domain could result in that. If your changes maintain complex symmetry in the frequency domain, then the imaginary components should be zero (or very close), but you still need to get rid of them if you want to use the sound command to listen to your signal.

Low-pass filtering

An ideal low-pass filter eliminates high frequency components entirely, as in: H L i d e a l ( ω ) = { 1 | ω | B 0 | ω | > B } MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOqaaiaadIeadaqhaaWcbaGaamitaaqaaiaadMgacaWGKbGaamyzaiaadggacaWGSbaaaOGaaiikaiabeM8a3jaacMcacqGH9aqpdaGadaqaauaabeqaciaaaeaacaaIXaaabaWaaqWaaeaacqaHjpWDaiaawEa7caGLiWoacqGHKjYOcaWGcbaabaGaaGimaaqaamaaemaabaGaeqyYdChacaGLhWUaayjcSdGaeyOpa4JaamOqaaaaaiaawUhacaGL9baaaaa@525A@ A real low-pass filter typically has low but non-zero values for | H L ( ω ) | MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOqaamaaemaabaGaamisamaaBaaaleaacaWGmbaabeaakiaacIcacqaHjpWDcaGGPaaacaGLhWUaayjcSdaaaa@3DFE@ at high frequencies, and a gradual (rather than an immediate) drop in magnitude as frequency increases. The simplest (and least effective) low-pass filter is given by (e.g. using an RC circuit): H L ( ω ) = α α + j ω , α = cutoff frequency . MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOqaaiaadIeadaWgaaWcbaGaamitaaqabaGccaGGOaGaeqyYdCNaaiykaiabg2da9maalaaabaGaeqySdegabaGaeqySdeMaey4kaSIaamOAaiabeM8a3baacaGGSaGaaeiiaiabeg7aHjabg2da9iaabogacaqG1bGaaeiDaiaab+gacaqGMbGaaeOzaiaabccacaqGMbGaaeOCaiaabwgacaqGXbGaaeyDaiaabwgacaqGUbGaae4yaiaabMhacaqGUaaaaa@5620@

This low-pass filter can be implemented in MATLAB using what we know about the Fourier transform. Remember that multiplication in the Frequency domain equals convolution in the time domain. If our signal and filter are both in the frequency domain, we can simply multiply them to produce the result of the system. y ( t ) = x ( t ) h ( t ) Y ( ω ) = X ( ω ) H ( ω ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOabaeqabaGaamyEaiaacIcacaWG0bGaaiykaiabg2da9iaadIhacaGGOaGaamiDaiaacMcacqGHxiIkcaWGObGaaiikaiaadshacaGGPaaabaGaamywaiaacIcacqaHjpWDcaGGPaGaeyypa0JaamiwaiaacIcacqaHjpWDcaGGPaGaamisaiaacIcacqaHjpWDcaGGPaaaaaa@4EBC@ Below is an example of using MATLAB to perform low-pass filtering on the input signal x with the FFT and the filter definition above.

The cutoff of the low-pass filter is defined by the constant a . The low-pass filter equation above defines the filter H in the frequency domain. Because the definition assumes the filter is centered around w = 0, the vector w is defined as such. >>load fall %load in the signal>>x = fall;>>X = fft(x); % get the Fourier transform (uncentered)>>N = length(X);>>a = 100*2*pi;>>w = (-N/2+1:(N/2))*Fs/N*2*pi; % centered frequency vector (rad/s)>>H = a ./ (a + i*w); % generate centered sampling of H>>plot(w/(2*pi),abs(H)) % w converted back to Hz for plotting The plot will show the form of the frequency response of a system that we are used to looking at, but we need to shift it to match the form that the fft gave us for x. >>Hshift = fftshift(H); % uncentered version of H>>Y = X .* Hshift'; % filter the signal

If you are having problems multiplying vectors together, make sure that the vectors are the exact same size. Also, even if two vectors are the same length, they may not be the same size. For example, a row vector and column vector of the same length cannot be multiplied element-wise unless one of the vectors is transposed. The ' operator transposes vectors/matrices in MATLAB.
Now that we have the output of the system in the frequency domain, it must be transformed back to the time domain using the inverse FFT. Play the original and modified sound to see if you can hear a difference. Remember to use the sampling frequency Fs. >>y = real(ifft(Y));>>sound(x, Fs) % original sound>>sound(y, Fs) % low-pass-filtered sound The filter reduced the signal amplitude, which you can hear when you use the sound command but not with the soundsc which does automatic scaling. Replay the sounds with the soundsc and see what other differences there are in the filtered vs. original signals. What changes could you make to the filter to make a greater difference?
Sometimes, you may want to amplify the signal so that it has the same height as the original, e.g., for plotting purposes. >>y = y * (max(abs(x))/max(abs(y)))

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Continuous time linear systems laboratory (ee 235). OpenStax CNX. Sep 28, 2007 Download for free at http://cnx.org/content/col10374/1.8
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Continuous time linear systems laboratory (ee 235)' conversation and receive update notifications?

Ask