 #### 联系方式

• QQ：99515681
• 邮箱：99515681@qq.com
• 工作时间：8:00-23:00
• 微信：codinghelp2 #### 您当前位置：首页 >> Matlab编程Matlab编程

###### 日期：2019-11-21 11:54

Department of Electrical and Electronic Engineering

ELEC6026/ELEC8004 Digital Signal Processing

Assignment: Design of Linear Phase FIR Filters

(15 marks)

1. Objectives:

The purpose of this assignment is to study the properties of Short Time Fourier Transform

(STFT) based spectral analysis and the design of one dimensional finite-duration impulse

response (FIR) linear phase filters using MATLAB. The window method, parks-McClellan

method and convex programming method will be studied.

2. Equipment Required

MATLAB: MATLAB is an interactive environment for high level simulation of general

numerical applications such as numerical linear algebra, signal processing, etc. Refer to

http://www.mathworks.com/help/matlab/ for more details.

If you do not have the MATLAB software, you may use the PC workstations located at the

CYC103 Laboratory.

Reference: A.V. Oppenheim, Discrete-time Signal Processing, Prentice-Hall, 1991.

Microsoft Word or PDF format together with the appended MATLAB codes and uploaded to

the Moodle System by Nov 20, 2019 23:55 (GMT +8:00).

4. Theory

4.1 Window method

Window method generally begins with an ideal frequency response:

is the corresponding impulse response sequence. Many idealized systems are

defined by piecewise-constant or piecewise-functional frequency responses with discontinuities

at the boundaries between bands. As a result, they have impulse response that are noncausal and

infinitely long. Window method truncates the infinitely long impulse response by multiplying it

with a finite sequence called the window functions:

h(n) h (n) (n) ? d ? (2)

The Fourier transform of the FIR filter is then given by:

(3)

which is the periodic convolution of the desired ideal frequency response with the Fourier

transform of the windows. Hence, ( )

j? H e will be a smeared version of ( )

j?

d H e . The most

popular window functions being the Kaiser window:

(4)

where ? ? M / 2 , and 0

I represents the zeroth-order modified Bessel function of the first kind.

The design procedure involves the determination of the order M and the shape parameter ?

from the given specification. Let

min{ , } ? ? ? 1 ? 2

?? ? ?s ?? p

(for lowpass approximation)

where 1 2 ? ,? are respectively the pass and stop band ripples in the specification.

?s ? p

, are respectively the stop and pass band edge frequencies.

Define

A? ?20log10 ? (5)

Kaiser determined empirically that the value of ? and M needed to meet the specification is

given by:

Similar procedure can be applied to design multiband filters.

4.2 Parks-McClellan method

The Parks-McClellan algorithm uses the Remez exchange algorithm and Chebyshev

approximation theory to design filters with optimal ? error norm, i.e. the maximum error

between the desired frequency response and the actual frequency response is minimized. Filter

designed in this way exhibit an equiripple behavior in their frequency response.

Unlike the Kaiser window method, the pass and stop band ripples need not be the same. Kaiser

has obtained the following simplified formula for the estimation of filter order for a given

specification:

4.3 Convex programming method

Optimization toolbox: The problem mentioned above can be solved using a free Matlab toolbox

“CVX”, which is available at

Install the CVX toolbox according to the descriptions therein.

Background:

In FIR filter design, the following minimax problem is commonly encountered:

where h(n) is the filter coefficients to be determined, ? is the frequency interval of interest,

( )

j? H e is the frequency response of the FIR filter given by

is the ideal frequency response. Typical ideal frequency

responses of lowpass and highpass FIR filters are respectively given by

where ? is the group delay of the FIR filter, and ? p

and ?s

are the passband and stopband

edges, respectively.

4.4 PC-MATLAB

PC-MATLAB is an interactive environment for high level simulation of general numerical

applications such as numerical linear algebra, signal processing, etc.

MATLAB works with essentially only one kind of object, a rectangular numerical matrix with

possibly complex elements. Refer to PC-MATLAB Reference and Tutorial for more details of

matrix declaration and manipulation.

User defined function or command files can be added to MATLAB’s vocabulary if they are

expressed in terms of other existing functions. The commands and functions that comprise the

new function are put in a file whose name defines the name of the new function, with a file type

of .m appended. See the PC-MATLAB reference pp.3-84-3.85 for details. M-files can be created

using ordinary text-editor and placed in the same directory of MATLAB or other defined search

path in MATLAB. Type the name of the M-file in MATLAB environment will invoke the

commands or functions defined in the corresponding M-file.

In this experiment, we shall make use of two functions in the Signal Processing Toolbox in the

PC-MATLAB for designing linear phase FIR filters.

fir1 implements the classical method of windowed linear-phase FIR digital filter design. It is

formulated to design filters in standard lowpass, bandpass, highpass and bandstop configurations.

For example

b=fir1(n,Wn,kaiser(n+1,β))

Returns row vector b containing the n+1 coefficients of the order n Kaiser windowed lowpass

linear-phase FIR filter with normalized cutoff frequency Wn. Refer to MATLAB Signal

Processing Toolbox Tutorial pp. 1-32 - 1-33 and 2-61 - 2-62 for more details.

remez is a function to design linear phase FIR filters using the Parks-McClellan algorithm.

b=remez(n,f,m,w)

returns row vector b containing the n+1 coefficients of the order n FIR filter whose frequencymagnitude

characteristics match those given by vector f and m. For later versions of the

MATLAB, the remez function is replaced by firpm. The usage of firpm is similar to that of the

remez function

b=firpm(n,f,m,w)

f is a vector of frequency points, specified in the range between 0 and 1, where 1.0 corresponds

to half the sample frequency.

m is a vector containing the desired magnitude response at the points specified in f. The elements

of m must appear in equal-valued pairs.

w is the weight used in each frequency band.

Refer to pp. 1-34 - 1-35 and 2-91 - 2-93 of the Signal Processing Toolbox tutorial or the online

help manual of the PC-MATLAB for more details.

5. Procedure

The assignment package ‘ass1.zip’ contains the following files:

? ass1_main.m: This script is used to calculate and display the spectrogram of the synthetic

signal which is stored in Signal.mat. The script will load a variable named ‘x’, which is

a signal. The total duration of the signal is 2 seconds and the sampling rate is 200 Hz.

? stft.m: In-house MATLAB scripts to perform STFT.

? fir_type2_hp_cvx.m: This script is to design a type-II FIR linear-phase highpass filter

with the ideal frequency response in (12) and the following specifications:

(a) N ? 31.

(b) ?s ? 0.6? and ?p ? 0.8? .

(c) ? ? (N ?1)/ 2 ?15 .

(d) Coefficient symmetry: h(n) ? h(N ?1? n) , n ? 0,1,...,N .

(i) Run ass1_main.m to display the synthetic signal and the STFT-based spectrogram

using the default setting (window length = 0.3s). From the signal and its spectrogram,

comment on the properties of the signal and identify the frequency of the signal at

t ? 0,1 and 2 s.

(1 marks)

(ii) Re-calculate the spectrogram using the in-house program stft with different window

sizes: 0.2 and 0.5. Modify the MATLAB code in ass1_main.m to plot the two

spectrograms. Describe the difference between these spectrograms. Discuss how the

window size affects the time and frequency resolutions of the spectrograms.

(2 marks)

(iii) Use the function fir1 in MATLAB to design an FIR lowpass filter using Kasier

Window method with the following specifications:

? ? 0.6?, p ? ? 0.7?, s 0.001, ? 1 ? and 0.01, ? 2 ? (13)

Obtain the estimate of the filter from eqn. (5) – (7).

(1 marks)

(iv) Use the Parks-McClellan method (function firpm in MATLAB) to design a lowpass

filter with the specification as in (13). Obtain the estimate of the filter from eqn. (8).

(1 marks)

(v) Plot and discuss the frequency response of filters designed in (iii) and (iv).

(1 marks)

(vi) Comment on the two approaches in designing linear phase FIR filters.

(2 marks)

(vii) Use the convex programming method (refer to fir_type2_hp_cvx.m) to design a

lowpass filter with the same passband and stopband as in (13). Maintain the same ratio

of ripples in passband and stopband as in (13). Use the same filter length as calculated

in (iv). Plot its impulse, group delay and frequency responses.

(2 marks)

(viii) (*)Use the filter designed in (vii) to filter signal ‘x’ by linear convolution.

(2 marks)

Remarks (*) You are not allowed to use the function conv in MATLAB for your

implementation. However, you may use it to verify the accuracy of your own code.

(ix) Calculate the spectrogram of filtered signal with default window size. Plot the filtered

signal and its spectrogram.

(1 marks)

(x) Comment and explain the difference between the spectrogram of signal ‘x’ and the

filtered signal.

(2 marks)

***END***