You are on page 1of 41

Frequency Domain Signal Processing Using MATLAB

Mohammad Sadgh Talebi Sharif University of Technology

Fourier Transform in Matlab


Y = fft(X,n) z Computes n-point Discrete Fourier Transform (DFT) of each column of X with a FFT algorithm If length(x) < n => zero-padding If length(x) > n => truncate x
z

Y = ifft(X,n) z Similarly, IFFT computes n-point Inverse Discrete Fourier Transform (IDFT) of each column of X with a IFFT algorithm If length(x) < n => zero-padding If length(x) > n => truncate x
z

Signal Analysis > Convolution


fftshift(X) swaps the left and right halves of X. For matrices, fftshift(X) swaps the first quadrant with the third and the second quadrant with the fourth. z Similarly, ifftshift(X) neutralizes the results of fftshift.
z

Signal Analysis > Convolution


x(1:20)=0; x(21:30)=1; x(31:50)=0; figure(1); plot(x); X=fft(x); figure(2); subplot(211); plot(abs(X)); subplot(212); plot(angle(X)); figure(3); subplot(211); plot(abs(fftshift(X))); subplot(212); plot(angle(fftshift(X)));

Signal Analysis > Step Response

Signal Analysis > Step Response

Signal Analysis > Bode Diagrams


z

Filtering
Frequency Domain z Time Domain
z

Frequency Domain Filtering Take FFT from input signal and just multiply it by frequency response of filter. Finally take inverse FFT from result. z Alternatively, with the knowledge of Pole-Zero plot or Transfer Function, you can filter any signal using filter command.
z

Y = FILTER(B,A,X) z Filter data with an infinite impulse response (IIR) or finite impulse response (FIR) filter z y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... a(na+1)*y(n-na)
z

Time Domain Filtering Frequency response of desired filter yields the impulse response of filter, thus filtering can be carried out using:
z z

Conv Fftfilt

However, the main problem, i.e. computing the impulse response is still left.

Filter Design
z

Several approaches for computing impulse response of filters, with a desired characteristics
Parks-McClellan , (firpm and remez commands) z Traditional approximations for filters, such as Butterworth, Chebychev, Elliptic, etc. z Filter Design & Analysis Tool
z

Analog filter frequency response


z

H = FREQS(B,A,W) returns the complex frequency response of the analog filter specified by coefficient vectors b and a.

[H,W] = FREQS(B,A,F) picks f number of frequencies on which to compute the frequency response h.

Digital filter frequency response


z

[H,W] = FREQZ(B,A,N) returns the N-point complex frequency response vector H and the N-point frequency vector W in radians/sample of the filter. frequency response is evaluated at N points equally spaced around the upper half of the unit circle. If N isn't specified, it defaults to 512. [H,W] = FREQZ(B,A,N,'whole') uses N points around the whole unit circle.

Example: Frequency Response Using FREQZ


a=[1 3 2 1]; b=1; [H,w]=freqz(b,a,128); semilogy(w,abs(H));

Example: Frequency Response Using FREQS


z

Evaluate frequency response of

a = [1 0.4 1]; b = [0.2 0.3 1]; w = logspace(-1,1); h=freqs(b,a,w) mag = abs(h); phase = angle(h); subplot(2,1,1), loglog(w,mag) subplot(2,1,2), semilogx(w,phase)

Example: Frequency Response Using FREQS

Butterworth Filter
The frequency response of the Butterworth filter is maximally flat (has no ripples) in the passband, and rolls off towards zero in the stopband. z A Butterworth LP prototype has the following characteristic function:
z

Butterworth Filter (Contd)

Chebyshev Filter
z

having a steeper roll-off and more passband/stopband ripple than Butterworth filters Chebyshev filters have the property that they minimize the error between the idealized filter characteristic and the actual over the range of the filter, but with ripples in the passband or stopband.

Chebyshev Filter (Contd)


z

Chebyshev Type I
z

It has no ripple in the stopband, but has ripple in the passband. The transfer function is:

where Tn() is a chebyshev polynomial.

Chebyshev Filter (Contd)


z

Chebyshev Type II
z

It has no ripple in the passband, but has ripple in the stopband. The transfer function is:

where Tn() is a chebyshev polynomial

Chebyshev Filter (Contd)

Elliptic Filter
z

is a filter with equiripple behavior in both the passband and the stopband. It minimizes the maximum error in both bands, as opposed to a Chebyshev filter which exhibits equiripple behavior in the passband, or the inverse Chebyshev filter which has ripples in the stopband.

Elliptic Filter (Contd)


z

The magnitude of the frequency response of a lowpass elliptic filter is given by:

where Rn() is a chebyshev rational function.

Elliptic Filter (Contd)

Filters : Comparison

Butterworth Filter
z

butter designs lowpass, bandpass, highpass, and bandstop digital and analog Butterworth filters. [B,A] = BUTTER(N,Wn) designs an Nth order lowpass digital Butterworth filter and returns the filter coefficients in length N+1 vectors B (numerator) and A (denominator). The cutoff frequency Wn must be 0 <Wn < 1.0.

Butterworth Filter (Contd)


z

z z z

If Wn is a two-element vector, Wn = [W1 W2], BUTTER returns an order 2N bandpass filter with passband W1 < W < W2. [B,A] = BUTTER(N,Wn,'high') designs a highpass filter. [B,A] = BUTTER(N,Wn,'low') designs a lowpass filter. [B,A] = BUTTER(N,Wn,'stop') is a bandstop filter if Wn = [W1 W2].

Chebyshev Filter
z

[b,a] = cheby1(n,R,Wp) designs an order n Chebyshev lowpass digital Chebyshev filter with normalized passband edge frequency Wp and R dB of peak-to-peak ripple in the passband. Normalized passband edge frequency is the frequency at which the magnitude response of the filter is equal to -R dB.

Butterworth Example
[b,a]=butter(7,.32); [H,w]=freqz(b,a,128); plot(w,abs(H));

Filter Design with Parks-McClellan


FRIPM command designs a linear-phase FIR filter using the Parks-McClellan algorithm. z Chebyshev approximation is used to fit the optimal fit between desired and actual response. z b = firpm(n,f,a): returns n+1 coefficients of the order n FIR filter whose frequencyamplitude characteristics match those given by vectors f and a.
z

Filter Design with Parks-McClellan (Contd)


z

f is a vector of pairs of normalized frequency points, specified in the range between 0 and 1 in increasing order. a is a vector containing the desired amplitudes at the points specified in f. f and a must be the same length. The length must be an even number.

Filter Design with Parks-McClellan (Contd)


z

The desired amplitude at frequencies between pairs of points (f(k), f(k+1)) for k odd is the line segment connecting the points (f(k), a(k)) and (f(k+1), a(k+1)). The desired amplitude at frequencies between pairs of points (f(k), f(k+1)) for k even is unspecified. The areas between such points are transition or "don't care" regions.

Example of FIRPM Filter Design


f = [0 0.3 0.4 0.6 0.7 1]; a = [0 0 1 1 0 0]; b = firpm(17,f,a); [h,w] = freqz(b,1,512);

How to read a sound


z

[y,Fs,bits] = wavread('filename',[N1 N2])


z

Read Microsoft WAVE (.wav) sound file specified in the filename and load its data to vector y ( samples N1 through N2). Fs returns the sampling frequency and bits returns the number of bits used for encoding.

How to write a signal as a sound


z

wavwrite(y,Fs,N,'filename')
writes the data stored in the variable y to a WAVE file called filename. Fs is sample rate and N is the number of bits used for encoding. Amplitude values outside the range [-1,+1] are clipped prior to writing. z N = 8, 16, 24, or 32
z

How to make a sound noisy!


z

By using wavread command, first we convert a sound into a vector, then we add noise term to it. Common forms of noises are Gaussian and Uniform.

Gaussian Noise
z

Gaussian Noise
z

Y = randn(m,n) generates normally distributed random numbers (noises) In order to generate a Gaussian noise sequence with arbitrary statistics, multiply the output of randn by the standard deviation and then add the desired mean

Uniform Noise
z

Uniform Noise
z

Y = rand (m,n) generates unifromly distributed random numbers (noises) over [0,1] interval. In order to generate a uniform distribution of random numbers on a specified interval [a,b], multiply the output of rand by (b-a), then add a.

Questions
surely, in the creation of the heavens and the earth, there are signs for the owners of wisdom
The Holy Quran Thanks for your attendance.

You might also like