Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using
Scilab
Iman Mukherjee
Department of Electrical Engineering, IIT Bombay
December 23, 2010
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Outline
1 Basic signal processing tools
Discrete Fourier Transform
Fast Fourier Transform
Convolution
Plotting
Group Delay
Aliasing
2 Filter Design
Non-Recipe Based
Recipe Based
Few Advanced Topics
An Example Application
Another Example Application
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
x is the time domain representation
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
x is the time domain representation
xf is the frequency domain representation
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
x is the time domain representation
xf is the frequency domain representation
flag = 1 or -1
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
x is the time domain representation
xf is the frequency domain representation
flag = 1 or -1
Notice - Cosine is Even Symmetric, hence this 64-point DFT
is real with peaks at 4 and 60 (64-4)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Discrete Fourier Transform
DFT
∞
∑
𝑋(𝜔) = 𝑥[𝑛]𝑒−𝑗𝜔𝑛
𝑛=−∞
The Scilab command 99K [xf] = dft(x,flag);
x is the time domain representation
xf is the frequency domain representation
flag = 1 or -1
Notice - Cosine is Even Symmetric, hence this 64-point DFT
is real with peaks at 4 and 60 (64-4)
Faster way - fft ...
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
FFT
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
FFT
x=fft(a ,-1) or x=fft(a)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
FFT
x=fft(a ,-1) or x=fft(a)
y=fft2(x,n,m) - two-dimension
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
FFT
x=fft(a ,-1) or x=fft(a)
y=fft2(x,n,m) - two-dimension
x=fft(a,-1,dim,incr) - multidimensional fft
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
FFT
x=fft(a ,-1) or x=fft(a)
y=fft2(x,n,m) - two-dimension
x=fft(a,-1,dim,incr) - multidimensional fft
fftshift(abs(y)) - rearranges the fft output, moving the zero
frequency to the center of the spectrum
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Fast Fourier Transform
Exercise 1
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Convolution
The convol Command
With the convol command
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Convolution
The convol Command
With the convol command
Without the convol command (multiplying in the frequency
domain)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Convolution
Exercise 2
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Plotting
Bode and Pole-Zero Plots
Demo Pole-Zero Plot
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Plotting
Bode and Pole-Zero Plots
Demo Pole-Zero Plot
Demo Bode Plot
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Group Delay
Group Delay
Rate of change of Phase w.r.t Frequency
𝑑𝜙
𝜏𝑔 =
𝑑𝜔
Where,
𝜏𝑔 is the Group Delay
𝜙 is for phase delay
𝜔 is for frequency
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Aliasing
What is Aliasing?
Ambiguity from reconstruction !
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Aliasing
What is Aliasing?
Ambiguity from reconstruction !
Shannon-Nyquist Sampling theorem.
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Aliasing
What is Aliasing?
Ambiguity from reconstruction !
Shannon-Nyquist Sampling theorem.
Under-sampling
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Basic signal processing tools
Aliasing
What is Aliasing?
Ambiguity from reconstruction !
Shannon-Nyquist Sampling theorem.
Under-sampling
Scilab commands to remember -
t = soundsec(n [,rate]) - generates n sampled seconds of time
parameter
v = linspace(x1,x2 [,n]) - linearly spaced vector
mtlb hold(flag)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
First order filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
First order filter
Second order filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
First order filter
Second order filter
Observation : More attenuation !
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
First order filter
Second order filter
Observation : More attenuation !
Scilab commands to remember -
ss2tf, tf2ss, dscr - State-Space ¡-¿ Transfer Function,
Discretizing Continuous Systems
r = repfreq(Sys,frq) - Frequency response
playsnd(data)
filtered output = flts(input,filter)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Analog filter family prototypes
Butterworth
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Analog filter family prototypes
Butterworth
Chebyshev
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Analog filter family prototypes
Butterworth
Chebyshev
Inverse Chebyshev
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Analog filter family prototypes
Butterworth
Chebyshev
Inverse Chebyshev
Elliptic/Chauer
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Butterworth
Passband: Monotonic
Stopband: Monotonic
No ripples
Wide Transition, slow Roll-off
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Chebyshev
Passband: Equiripple
Stopband: Monotonic
Only ripples in Passband
Lesser Transition width, slow Roll-off at high frequencies
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Inverse Chebyshev
Passband: Monotonic
Stopband: Equiripple
Only ripples in Stopband
Lesser Transition width, slow Roll-off at low frequencies
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
Elliptic
Passband: Equiripple
Stopband: Equiripple
Ripples in both - Passband and Stopband
Least Transition, sharp and fast Roll-off
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Calculate the Order of the filter
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Calculate the Order of the filter
Calculate the filter coeffiecients
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Calculate the Order of the filter
Calculate the filter coeffiecients
Implement Analog Transfer function
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Calculate the Order of the filter
Calculate the filter coeffiecients
Implement Analog Transfer function
Perform bilinear transformation
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Non-Recipe Based
An example
Steps :
Decide over the filter specifications (type, PB and SB cut-offs,
ripples etc.)
Normalize
Calculate the Order of the filter
Calculate the filter coeffiecients
Implement Analog Transfer function
Perform bilinear transformation
Convert to the needed filter type
Let us design a Low-Pass Chebyshev Filter
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Recipe Based
Scilab Commands in Filter Design
iir - [hz]=iir(n,ftype,fdesign,frq,delta)
eqiir -
[cells,fact,zzeros,zpoles]=eqiir(ftype,approx,om,deltap,deltas)
eqfir - [hn]=eqfir(nf,bedge,des,wate)
wfir - [wft,wfm,fr]=wfir(ftype,forder,cfreq,wtype,fpar)
analpf - [hs,pols,zers,gain]=analpf(n,fdesign,rp,omega)
trans - hzt=trans(pd,zd,gd,tr type,frq)
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Recipe Based
Exercise 3
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Few Advanced Topics
Kalman and Weiner Filter
Kalman
Weiner
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
Some more tools
Cepstrum
cepstrum(freqvector,magnitude) F[log[spectrum)]
information about rate of change in the different spectrum
bands
Complex Cepstrum
Real Cepstrum
Power Cepstrum
Phase Cepstrum
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
An Example Application
Audio effects
Flanging - A sound file seems like riding on a wave
Echo - Delayed and added back
Equalizer - Different Frequency Bands
Low
Mid
High
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
An Example Application
Thank you !
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab
Digital Signal Processing and Filter Design using Scilab
Filter Design
An Example Application
Sanjit K. Mitra, “Digital Dignal Processing, A computer based
approach”, Tata McGraw-Hill Edition 1998.
Steven W. Smith, “http://www.dspguide.com/ ”
Carey Bunks, Franc ¸ois Delebecque, Georges Le Vey and
Serge Steer, “Scilab Group INRIA Meta2 Project/ENPC
Cergrene ”, Signal Processing with Scilab.
Iman Mukherjee Digital Signal Processing and Filter Design using Scilab