You are on page 1of 41

Frequency Domain Signal

Frequency Domain Signal


Processing Using MATLAB
Processing Using MATLAB
Mohammad Sadgh Talebi
Sharif University of Technology
Fourier Transform in
Fourier Transform in
Matlab
Matlab
Y = fft(X,n)
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
Y = ifft(X,n)
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
Signal Analysis >
Signal Analysis >
Convolution
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.
Similarly, ifftshift(X) neutralizes the
results of fftshift.
Signal Analysis >
Signal Analysis >
Convolution
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 >
Signal Analysis >
Step Response
Step Response
Signal Analysis >
Signal Analysis >
Step Response
Step Response
Signal Analysis >
Signal Analysis >
Bode Diagrams
Bode Diagrams
Filtering
Frequency Domain
Time Domain
Frequency Domain Filtering
Take FFT from input signal and just multiply it
by frequency response of filter. Finally take
inverse FFT from result.
Alternatively, with the knowledge of Pole-Zero
plot or Transfer Function, you can filter any
signal using filter command.
Y = FILTER(B,A,X)
Filter data with an infinite impulse
response (IIR) or finite impulse response
(FIR) filter
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)
Time Domain Filtering
Frequency response of desired filter yields the
impulse response of filter, thus filtering can be
carried out using:
Conv
Fftfilt
However, the main problem, i.e. computing the
impulse response is still left.
Filter Design
Filter Design
Several approaches for computing
impulse response of filters, with a desired
characteristics
Parks-McClellan , (firpm and remez
commands)
Traditional approximations for filters, such
as Butterworth, Chebychev, Elliptic, etc.
Filter Design & Analysis Tool
Analog filter frequency response
Analog filter frequency response
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
Digital filter frequency response
[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:
Example:
Frequency Response Using FREQZ
Frequency Response Using FREQZ
a=[1 3 2 1];
b=1;
[H,w]=freqz(b,a,128);
semilogy(w,abs(H));
Example:
Example:
Frequency Response Using FREQS
Frequency Response Using FREQS
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:
Example:
Frequency Response Using FREQS
Frequency Response Using FREQS
Butterworth Filter
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.
A Butterworth LP prototype has the
following characteristic function:
Butterworth Filter (Cont
Butterworth Filter (Cont

d)
d)
Chebyshev Filter
Chebyshev Filter
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 (Cont
Chebyshev Filter (Cont

d)
d)
Chebyshev Type I
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 (Cont
Chebyshev Filter (Cont

d)
d)
Chebyshev Type II
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 (Cont
Chebyshev Filter (Cont

d)
d)
Elliptic Filter
Elliptic Filter
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 (Cont
Elliptic Filter (Cont

d)
d)
The magnitude of the frequency response of
a lowpass elliptic filter is given by:
where Rn() is a chebyshev rational function.
Elliptic Filter (Cont
Elliptic Filter (Cont

d)
d)
Filters : Comparison
Filters : Comparison
Butterworth Filter
Butterworth Filter
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 (Cont
Butterworth Filter (Cont

d)
d)
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
Chebyshev Filter
[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
Butterworth Example
[b,a]=butter(7,.32);
[H,w]=freqz(b,a,128);
plot(w,abs(H));
Filter Design with
Filter Design with
Parks
Parks
-
-
McClellan
McClellan
FRIPM command designs a linear-phase FIR
filter using the Parks-McClellan algorithm.
Chebyshev approximation is used to fit the
optimal fit between desired and actual
response.
b = firpm(n,f,a): returns n+1 coefficients of
the order n FIR filter whose frequency-
amplitude characteristics match those given
by vectors f and a.
Filter Design with
Filter Design with
Parks
Parks
-
-
McClellan (Cont
McClellan (Cont

d)
d)
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
Filter Design with
Parks
Parks
-
-
McClellan (Cont
McClellan (Cont

d)
d)
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
Example of
FIRPM Filter Design
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
How to read a sound
[y,Fs,bits] = wavread('filename',[N1 N2])
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
How to write a signal as a sound
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.
N = 8, 16, 24, or 32
How to make a sound noisy!
How to make a sound noisy!
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
Gaussian Noise
Gaussian Noise
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
Uniform
Noise
Noise
Uniform Noise
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
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