You are on page 1of 281

Introduction to Digital Signal Processing

Revision 1.0

fre

qu

en
c

y(
Hz

time

(sec)


" " " "













3







, ,
,

II


, ,


MATLAB (
Mathworks )

http://www.ee.mut.ac.th/home/pornchai/

MATLAB
DSP (TMS320C5x)




(
pawa@ziplip.com)


12/1999
10/2000

III

1
1
3
5
8
9
10

11

11
14
16

25

FIR IIR

4 z
z
z ()
z
z

5 DTFT
DTFT

DTFT z

25
26
29
32
33
35
39

41
41
44
47
51
55

59
59
62
63

IV

6 DFT FFT

DFT
DFT


FFT
DFT
DFT
FFT

7 FIR


FIR

8 IIR


()

IIR
FIR IIR

64

69
69
70
72
74
75
77
84
85
85
89

95
95
98
101
107
109
111
116
121

123
123
128
130
130
138
144
147

149

2's complement

149
149
156

10



Matlab

11

12


UPS

LMS

Matlab
Matlab

158
164

165
165
171
174
185
196
202

205
205
206
208
211
212
215
217

222
222
224
225
226
231
231
233
234
235
236
241
246

249
249

VI

Matlab


()

250
250
251
251
252
252
253
254
255
256
258
260
260
263
263
263
264
265

Matlab DSP Toolbox

266

269

272

1 1


(continuous-time signal)
(discrete-time signal)

,
50 Hz, x t x
t x t x(t)
(analog signal)

2 n
n n = , -2, -1, 0, 1, 2, 3,
n x(n)

t (sec)

1.1 ()

1 2

1.1








1.2 x(n)
8

0 1

(Digital Signal Processing)
(Discrete-time Signal Processing)

( )

x(n)
0 1 2

x(0), x(1), x(2), x(3), x(4),

n
1.21, 1.33, 1.74, 0.45, -1.56,

00110110, 00111000, 01100011,
1.2

1 3



0 1
(Digital System Design) (implementation)





1.3

1. 2
1.1 (Sampler)
x(t) x(n)
(sampling rate) fs
(Hz)
2
1.2 (Quantizer) x(n)
()
x(n)
(quantization)

x(n)

x(n)

10

1 4


(A/D converter)
(IC)
x(t)

A/D

x(n)

y(n)

D/A

y(t)

1.3
2.
x(n)
y(n)



y(n) = 0.5( x(n) + x(n-1) )

(1.1)

( x(n) )

1 ( x(n-1) ) 0.5
n=3 y(3) y(3) = 0.5( x(3) + x(2) )
n=4 y(4) y(4) = 0.5( x(4) + x(3) )
n=5 y(5) y(5) = 0.5( x(5) + x(4) )




1.1

1 5

(low pass filter)



1.1






- x(n)
- x(n-1), x(n-2), x(n-3),
- () x(n+1), x(n+2), x(n+3),
- (

) y(n-1), y(n-2), y(n-3),


3. (Signal Reconstruction)
(
3 ) y(n) y
(t)
(D/A converter)


(Real-Time Signal Processing)


1
1

1.4




1 6

x(t)

A/D

Real-Time
DSP

A/D

y(t)

1.4 DSP

MATLAB




() PhotoShop
(Image Processing)

()





3
1)



MPEG
CPU

2) DSP DSP
(Digital Signal Processor)

1 7




, , circular buffer
(multi-processing)

DSP Texas Instruments, Motorola, Analog Devices, AT&T DSP
(fixed-point)
(floating-point)
DSP




DSP
(ADC) (DAC)
1.5 DSP fixed-point 16
TMS320C50 Texas Instruments 16
16 DAC ADC 12 12
12
fs ADC
DSP
DSP ROM RAM
ROM
RAM
address
decoder
address bus

rate = fs clock

x(t)

analog
LPF

ADC
12

x(n)

interrupt
RD

DSP
chip

RD,WR

data bus

ROM
16

RAM
16

analog
LPF

DAC
16

WR

12

y(n)

1.5 DSP

y(t)

1 8

3)

FFT (Fast
Fourier Transform)


(Application Specific Integrated Circuits ASIC)

FPGA (Field Programmable Gate Array)

FPGA ASIC

DSP (
DSP )




1. (speech coding),

(speech recognition), (sound effect), , ,
(music synthesizer)
2. modulation/demodulation,
(channel equalizer) ,
(video conferencing),
, , (navigation system), GPS
3. (digital control system)
4.
(EEG)
(ECG), (hearing aid)
5.
6. (2 ), (3
), holography ( 3 ) ,

1 9

, , ,
, ,
7. (spectrum analyzer),
(function generator), (pattern matching)
8.

12

1. , ,

2.



3.
(adaptive filter) ,
, 3
4.
5. DSP VLSI ( DSP
VLSI)




Kalman Filter

1 10


VLSI

1. (bandwidth)




MHz
MHz ( )
2.
VLSI
DSP




3.


, DVD ,
,
4. 1 3
VLSI
()
, ,
, front-end ( )
back-end ( )

2 11

(Sampling)

, -2T, -T, 0, T, 2T, 3T,


fs T=1/fs 2.1
!x(t)
= fs

x(t)

x(t) x(n)
2.1

!x(t)
, -2T, -T, 0, T, 2T, 3T,
1
t

2 12

!x(t) x(t)
(impulse signal)
(t) 1 t=0 0
1, t = 0
(t) =
0, t =

(2.1)


T ()
s(t) 2.2 s(t)

..., -2T, -T, 0, T, 2T, ...

s(t) = (t - nT)
n =-

(2.2)

s(t)
x(t)

x!(t) = x(t) (t - nT)


n= -

(2.3)

!x(t) 2.2
1
x(n) n t x(n) x(t)

x(n) = x(t) t = nT

(2.4)

x(t) x(n)
x(t) t
t = -2T, -T, 0, T, 2T,
x(n)
n = , -2, -1, 0, 1, 2, x(n)


2 13

fs
x(n)
fs

x(t)

x (t) x(n)

s(t)
1

t
x(t) = x(t) (t - nT)

s(t) = (t - nT)
n = -

|X(f)|

n =-

S(f)
-fs/2

-fmax 0

fmax f

-fs

fs

S(f) = fs (f - nfs )
n =-

2fs

| X! (f)|

fs/2
(Nyquist interval)

-fs

fs

X(f) = fs X(f - nfs )


n =-

2.2
x(t)
X(f) (bandwidth)
fmax 2.2 s(t) ()
fs
fs 2.5

S(f) = fs (f - nfs )
n =-

(2.5)

X ( f )
(convolution) !x(t) s(t)
x(t) x!(t) X ( f ) X(f) S(f)
( * )

X(f) = X(f) * S(f)

2 14

S(f)

X(f) = X(f) * fs (f - nfs )

n =-

= fs X ( f ) * (f - nfs )
n =-

X(f) = fs X(f - nfs )


n =-

(2.6)

X(f-nfs)

nfs n - +
X ( f )
X(f) ..., -2fs, -fs, 0, fs, 2fs, ...
(image)
X ( f ) 2.2
X ( f )


x(t) X ( f ) ()

(Sampling Theorem)
fmax


fs > 2fmax

(2.7)

2fmax (Nyquist frequency)



fs

..., -2fs, -fs, 0, fs, 2fs, ...
2.3

2 15

aliasing

X!( f )
-fs

-fs/2

fs/2

fs

2fmax
2.3 fs
fs
2fmax X(f)
aliasing ( ) aliasing

-fs/2 fs/2 (Nyquist interval)
aliasing

aliasing

1. aliasing (anti-aliasing filter)

fmax


fmax
(
fmax)
2.4
|Hideal|

|Hfilter|

1
-fmax

1
0

fmax

-fmax

fmax

2.4 aliasing


2.4
aliasing 2fmax

2 16

2. 2fmax Oversampling
aliasing
fs aliasing ( tolerance
2.5 )

aliasing
-fs/2

-fs

-fmax

X!( f )
0

fs/2
tolerance

fmax

fs

2.5 2fmax
fs 2.5fmax anti-aliasing
fs
fs

(Tproc)
Tproc < T

(2.8)

(Analog Reconstruction)


()
fs/2
(reconstruction filter) -fs/2 fs/2

0

2.6

2 17

y (n)

y! ( t )

y (t )

t
fcutoff = fs/2

| Y! ( f )|
-fs

|Y(f)|

fs

2.6
y ( t )

y ( t )
y(n) (hold)

y(n) 2.7


y ( t )

0 T

y 2 ( t )

0 T

y(t)

2.7
y 2 ( t )
y ( t )
y 2 ( t )
hH(t) 2.8

(sinc)
2.8 ( )

2 18


2.8

0, fs, 2fs,



fs/2


hH(t)
1

0 T
|HH(f)|

fs

2fs

3fs

fs

2fs

3fs

fs

2fs

3fs

| Y! ( f )|
)

fmax

| Y!2 ( f )|
)

fmax

2.8 ) , )
, ) y!( t ) , ) y! 2 ( t )

2 19

aliasing
fs/2

oversampling
aliasing


fs 2fmax

fs
2fmax
.. .. Shannon ,

2.1
()

x(t) = sin(2f1t) + 0.3cos(2f2t)
x(t)

x(n)

x!( t)

fcutoff = fs/2

y(t)

f1 = 2 kHz f2 = 4 kHz fs = 14kHz


1.1) x(n), t = 0
1.2) x(t) x!( t ) X( f ) X! ( f )
1.3) x!( t ) y(t)

1.1) t = nT, n=0, 1, 2, t x(t)


n
x(n) = x(t) t = nT
= sin(2nf1T) + 0.3cos(2nf2T)

2 20

= sin(2nf1/fs) + 0.3cos(2nf2/fs)
2 n
4 n
= sin( ) + 0.3cos( ) , n = 0, 1, 2,
7
7
= [0.300 0.7151 0.7046 0.6209 -0.2468 -1.2452 -0.8486 ]
1.2) X!( f ) X( f ) , -2fs, -fs, 0, fs, 2fs,
2.9
X( f )
-4k -2k

2k

4k

|Y(f)|

X! ( f )

-18k -16k -14k -12k -10k

-4k -2k

2k

f(Hz)

4k

10k 12k 14k 16k 18k

f(Hz)

2.9 x(t) x!( t) fs = 14kHz


1.3) x!( t ) x(n) 0,
T, 2T, 3T,
y(t)
2kHz 4kHz
y(t) = sin(2f1t) + 0.3cos(2f2t), f1 = 2kHz f2 = 4kHz
x!( t)
y(t)

t (ms)

2.10 y(t) x!( t) fs = 14kHz

2 21

2.2 2.1 fs = 7 kHz X! ( f )


aliasing fs aliasing
x(n) = sin(2nf1/fs) + 0.3cos(2nfs/fs) fs = 7kHz
4 n
8 n
= sin( ) + 0.3cos( ) , n = 0, 1, 2,
7
7
= [0.300 0.7046 -0.2468 -0.8486 ]
X( f )
-4k

-2k

2k

4k

f(Hz)

|Y(f)|

X! ( f )

-12k -11k -10k -9k

-7k

-5k -4k -3k -2k

2k 3k 4k 5k

7k

9k 10k 11k 12k

f(Hz)

aliasing

2.11 x(t) x!( t ) fs = 7kHz


X!( f ) X(f) 7kHz 3
kHz X(f) 0 Hz aliasing
2.11 3.5 kHz

y(t) 2kHz 3kHz


2kHz 4kHz
y(t) = sin(2f1t) + 0.3cos(2f2t), f1 = 2kHz f2 = 3kHz
aliasing
2.12 2.10 x(n)

y(t)


aliasing 2
4Hz fs 8 kHz

2 22

x!( t)

y(t)

t (ms)

2.12 y(t) x!( t ) fs = 7kHz



aliasing
2.2 aliasing 3 kHz

3 kHz

2.3 2.1 (
aliasing) aliasing 0 fs/2 fs=18kHz
) x(t) = sin(8000t)cos(12000t)
( sin(2ft+)
f )

sinAcosB = 0.5{sin(A+B) + sin(A-B)}
x(t) = 0.5sin(20000t) + 0.5sin(-4000t)
= 0.5sin(20000t) - 0.5sin(4000t)
x(t) 10 kHz 2 kHz fs = 18 kHz
10 kHz (fs/2) aliasing
aliasing

aliasing = | m fs - |

(2.9)

2 23

m
aliasing
10 kHz m=1
aliasing = | 18k - 10k | = 8 kHz
2.9
40 kHz m=2
aliasing = | 2 (18k) - 40k | = |-4k| = 4 kHz
m
aliasing (0 9 kHz)
m=2 aliasing X(f) 2fs
) x(t)
|X(f)|

-10k

10k f (Hz)

9 10 kHz aliasing
aliasing = fs - 10 kHz fs - 9 kHz
= 8 kHz 9 kHz
) x(t)
x(t)

-0.5

0.5

t (ms)

x(t) 0.5 ms f0 =
1/0.5ms = 2 kHz
( 3f0, 5f0, 7f0, ...) x(t)
2 kHz, 6 kHz, 10 kHz, 14 kHz, 18 kHz, ...

2 24

9 kHz 10 kHz, 14 kHz, 18 kHz, ... aliasing




alaiasing
10 kHz aliasing |18k - 10k|
= 8 kHz
14 kHz aliasing |18k - 14k|
= 4 kHz
18 kHz aliasing |18k - 18k|
= 0 kHz
22 kHz aliasing |18k - 22k|
= 4 kHz
26 kHz aliasing |18k - 26k|
= 8 kHz
30 kHz aliasing |2(18k) - 30k| = 6 kHz
34 kHz aliasing |2(18k) - 34k| = 2 kHz
38 kHz aliasing |2(18k) - 38k| = 2 kHz
42 kHz aliasing |2(18k) - 42k| = 6 kHz
46 kHz aliasing |3(18k) - 46k| = 8 kHz
...
aliasing
aliasing aliasing
0, 2 kHz, 4 kHz, 6 kHz, 8 kHz

3 25

3
(Discrete-Time Systems)



(Continuous-Time System)
,
, ,


1
x(n) y(n)


) y(n) = 2x(n - 2)
(delay) 2 3.1

n
3.1 y(n) = 2x(n - 2)

3 26

x(n) n=8 y(n) n=10 ( 2 )


x(n-k) x(n) k x(n+k) x(n)

k ( k )
) y(n) = 0.5 ( x(n) + x(n-1) ) 1


) y(n) = 0.5y(n-1) + x(n)

) y(n) = x2(n)
) y(n) = x(2n) n = 0, 1, 2,
y(0) = x(0), y(1) = x(2), y(2) = x(4),
[x(0), x(2), x(4), x(6), ]

(Linearity and Time Invariance)



x1(n)
y1(n) x2(n) y2(n)
x(n) x1(n) x2(n)

x(n) = a1x1(n) + a2x2(n)

(3.1)

a1 a2
(linear system) x(n)

y(n) = a1y1(n) + a2y2(n)

(3.2)

y(n) y1(n) y2(n)


(a1 a2)

3 27

-

superposition

x(n) y(n)
k x(n-k)
y(n-k) (

)
(time-invariant system)




3.1

1) y(n) = ax(n) + bx(n-1)
1.1) ?
x1(n) y1(n) = ax1(n) + bx1(n-1)
x2(n) y2(n) = ax2(n) + bx2(n-1)
x(n) = a1x1(n) + a2x2(n) x(n)
y(n) = a [a1x1(n) + a2x2(n)] + b [a1x1(n-1) + a2x2(n-1)]

y(n) = a1 [ax1(n) + bx1(n-1)] + a2 [ax2(n) + bx2(n-1)]


= a1y1(n) + a2y2(n)
x(n) y(n)
1.2) ?
xd(n) = x(n-k) xd(n)

3 28

yd(n) = axd(n) + bxd(n-1)


= ax(n-k) + bx((n-1)-k)
= ax(n-k) + bx((n-k)-1)
= y(n-k)
x(n-k) y(n-k)
2) y(n) = x(2n)
2.1) ?
x1(n) y1(n) = x1(2n)
x2(n) y2(n) = x2(2n)
x(n) = a1x1(n) + a2x2(n) x(n)
y(n) = x(2n) = a1x1(2n) + a2x2(2n)
y(n) = a1y1(n) + a2y2(n)

2.2) ?
xd(n)= x(n-k) xd(n)
yd(n) = xd(2n) = x(2n-k)
y(n-k) = x(2(n-k)) = x(2n - 2k)
y(n-k)
yd(n) y(n-k) x(n-k)
(time-varying system)
(downsampler) 11

x(n) = [ x0, x1, x2, x3, x4, x5, ] y(n) = [ x0, x2, x4, x6, ]
1
xd(n) = x(n-1) = [ 0, x0, x1, x2, x3, x4, x5, ] yd(n) = [ 0, x1, x3, x5, x7, ]
yd(n) = y(n-1) yd(n)
y(n)
3) y(n) = 2x(n) + 5
3.1) ?

3 29

x1(n) y1(n) = 2x1(n) + 5


x2(n) y2(n) = 2x2(n) + 5
x(n) = a1x1(n) + a2x2(n) x(n)
y(n) = 2 [a1x1(n) + a2x2(n)] + 5
y(n) = 2a1x1(n) + 2a2x2(n) + 5
a1y1(n) + a2y2(n) = a1(2x1(n) + 5) = a2(2x2(n) + 5)
= 2a1x1(n) + 2a2x2(n) + 5a1 + 5a2
y(n) a1y1(n) + a2y2(n) (nonlinear system)
3.2) ?
xd(n) = x(n-k) xd(n)
yd(n) = 2xd(n) + 5
= 2x(n-k) + 5
= y(n-k)
x(n-k) y(n-k)


y(n) = a0x(n) + a1x(n-1) + a2x(n-2) + - b1y(n-1) - b2y(n-2) -

i= 0

i=1

y(n) = a i x( n i) - b i y ( n i)

(3.3)

ai bi ( n)

(Impulse Response)



h(n)
( (n) ) 3.2

3 30

(n)
0

h(n)

h(n)

0 1 2 3 4 n

3.2


x(n)
x(n) n=0 x(n)
n=0, 1, 2,
x(n) = x(0)(n) + x(1)(n-1) + x(2)(n-2) + ...

(3.4)

x(0)h(n)

x(0)
n=0

H
0

x(2)h(n-2)

x(2)

n=2

x(1)h(n-1)

x(1)

n=1

H
n

y( n ) = x( m ) h( n m)

m=0

x(n)
H
0

2 n

3.3

5 n

3 31

x(n) n=1
x(1)(n-1) x(n)n=1 = x(1)
(n) h(n)

(n-1) h(n-1) (n-2) h(n-2)
x(0)(n) x(0)h(n)
x(1)(n-1) x(1)h(n-1)
y(n)
y(n) = x(0)h(n) + x(1)h(n-1) + x(2)h(n-2) + ...

y( n ) = x(m )h( n m )
m=0

(3.5)

x(n) n=0

y( n ) = x(m )h( n m )
m = -

(3.6)

x(n) h(n)
(discrete convolution)

y(n)
y(n) = x(n) h(n)

(3.7)

m n - k
y( n ) =

x ( n - k ) h ( n - (n - k ))

n k =
n +

y(n) = h ( k )x ( n - k )
k =n

n
n- - n+

3 32

y(n) = h ( k ) x ( n - k )
k =

(3.8)

3.5 3.8
y(n) = x(n) h(n) = h(n) x(n) 3.8 ( n-k x)

m k m k
n

FIR IIR
FIR IIR
FIR Finite Impulse
Response FIR h(n) h(n)
N FIR (order) N-1 h(n)
n=0 h(n) n<0 n>N-1
IIR Infinite Impulse Response IIR h(n)
h(n)
n 3.4 h(n)
n ( h(n)
IIR h(n) )
h(n) FIR

h(n) IIR

3.4 FIR IIR


7 8
h(n)
h(n)
FIR IIR

3 33

3.2 FIR h(n) = [4 2 1] y(n) x(n) =


[1 2 3 2 1] h(n) x(n) n=0
3.6
n = 0 1 2 3 4 5 6 7 8 ...
x(0) = x(0)h(n) = 4 2 1 0 0 0 0 0 0 ...
x(1) = x(1)h(n-1) = 0 8 4 2 0 0 0 0 0 ...
x(2) = x(2)h(n-2) = 0 0 12 6 3 0 0 0 0 ...
x(3) = x(3)h(n-3) = 0 0 0 8 4 2 0 0 0 ...
x(4) = x(4)h(n-4) = 0 0 0 0 4 2 1 0 0 ...
y(n) = = 4 10 17 16 11 4 1 0 0 ...
h(n) Lh x(n) Lx
y(n) Lh + Lx - 1

(Difference Equation)
h(n)

x(n) y(n)

y(n)
3.3

y(n) = a0x(n) + a1x(n-1) + a2x(n-2) + - b1y(n-1) - b2y(n-2) -

i=0

i=0

y(n) = a i x ( n i ) - b i y ( n i )

(3.9)

FIR bi

IIR bi 1

3 34

3.3 3.2
FIR 3.8

y(n) = h ( k )x ( n - k )
k =

FIR
y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2) + + h(N-1)x(n-N+1)

(3.10)

N h(n) 3.9
ai = h(i) bi = 0 h(n) n = 0, 1, 2

y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2)
y(n) = 4x(n) + 2x(n-1) + x(n-2)
y(n) n = 0, 1, 2, 3
n=0, y(0) = 4 x(0) + 2 x(-1) + x(-2) = 4(1) + 2(0) + 0 = 4
n=1, y(1) = 4 x(1) + 2 x(0) + x(-1) = 4(2) + 2(1) + 0 = 10
n=2, y(2) = 4 x(2) + 2 x(1) + x(0) = 4(3) + 2(2) + (1) = 17
...
y(n) 3.2

3.2

1 1


IIR h(n)
IIR (feed back)
h(n) IIR
h(n) IIR

3 35

3.4 IIR y(n) = 0.5y(n-1) + x(n) h(n)



h(n)
x(n) = (n)
y(n) = 0.5y(n-1) + (n)
n = 0, 1, 2, ...
y(0) = 0.5y(-1) + (0) = 0.5x0 + 1 = 1
y(1) = 0.5y(0) + (1) = 0.5x1 + 0 = 0.5
y(2) = 0.5y(1) + (2) = 0.5x0.5 + 0 = 0.25
y(3) = 0.5y(2) + (3) = 0.5x0.25 + 0 = 0.125


h(n) = y(n) = [ 1, 0.5, 0.25, 0.125, ] h(n)
h(n) n
0.5 n , n 0
h(n) =
0 , n < 0
n h(n) IIR

z
4

(Causality)



x(n) (causal signal) x(n) = 0 n < 0
n

(3.11)

3 36

x(n) (anticausal signal) x(n) = 0 n 0 (3.12)


n
n=0
n (two-sided signal)
(non-causal signal) n<0


h(n)
(causal system) h(n) = 0 n < 0
(anticausal system) h(n) = 0 n 0

(3.13)
(3.14)

h(n) n (two-sided system)


(non-causal system) h(n) n<0

3.5
h(n) h(-1) h(-2)
h(n)

n = 0 ( n = -1 n = 2)

y(n) = h(-2)x(n+2) + h(-1)x(n+1) + h(0)x(n)+ h(1)x(n-1) + ...


Anticausal part

(3.15)

Causal part

h(n)

-4

-3

...
-2

-1

3.5

3 37



()

3.8
3.15 3.5
x(n-1)
1 x(n+1)
1

x(n-2), x(n-3), x(n+1), x(n+2), n (


) x(n) y(n)
x(n-1), x(n-2), x(n+1), x(n+2),

2




3.5 FIR h(n)
15 , - 2 n 2
h( n ) =
0 , n =

(3.16)

y(n) = 1/5 { x(n+2)+x(n+1)+x(n)+x(n-1)+x(n-2) }

(3.17)

(smoothing filter) (smooth)


n

3 38

h(n) 2 h(n)
3.6 h2(n) =
h(n-2)
y2(n) = y(n-2) = 1/5 { x(n)+x(n-1)+x(n-2)+x(n-3)+x(n-4) }

(3.18)

h2(n)=h(n-2), y2(n)=y(n-2)

x(n)

y(n)

h(n)

x(n)

h2(n)

y2(n)

h(n)
-2

-1

h2(n)
n

h(n)

3.6 h(n) (smoothing filter)


y2(n) y(n) 2
n = 3 y2(3) x(3)
y2(3) (delay) 2 y2(3)
y(1) x(1) x(1)
x(3)

y(1)
h(n)


h(n)



fs = 8 kHz
4000

(real-time)
(delay)

3 39

n
( n

(Stability)


|x(n)| < A A
|y(n)| < B B

(3.19)

bounded-input/bounded-output BIBO

h(n) 3.8

y(n) = h ( k ) x ( n - k )
k =

y(n) x(n-k) h(k) k x(n)


y(n)
h(n) n
Lim h(n) = 0

n
n -

(3.20)

h(n)
h(n)

3 40

n FIR h(n)
h(n) n


n=0

4 z 41

4
z

z (z-transforms)
z

z

z
z
z
x(n) n ..., -3, 2, -1, 0, 1, 2, 3, ... z x(n) X(z)

X ( z ) = x(n)z - n

(4.1)

n = -


X(z) = ... + x(-2)z2 + x(-1)z + x(0) + x(1)z-1 + x(2)z-2 + ...

(4.2)

X(z) = Z{x(n)} x(n) X(z)


X(z) z-n
x(n) X(z)
z n
, ,

4 z 42

a n , n 0
) z x(n) =
4.1 (
0 , n < 0
z-plane

|z|=|a|

X( z ) = x(n)z-n
n=-

n -n

= a z
n= 0

a
=
n= 0 z

ROC: |z|>|a|

1
a
<1

1- a / z
z
z
=
| z| >| a|
z- a
=

( 4.3)

|a| < 1
1
1- a
a
a + a 2 + a 3 + ... =
1- a
1 + a + a 2 + ... =

(4.3)
(4.4)

z X(z) (region of convergence)


ROC z ROC
z (z-plane) (real) z
(imaginary) z ROC
a |z| > |a|
X(z) (pole)
X(z)
ROC
4.1 X(z) a ROC |z| > |a|

4 z 43

a n , n < 0
4.2 () z x(n) =
0 , n 0

X( z ) = x(n)z-n
n=-
-1

= a n z -n
n=

m m = -n

X( z ) = a -m z m

z-plane

m=1

z
=
m=1 a

|z|=|a|

z/ a
z

<1
1- z / a
a
z
=
| z| <| a|
a-z

ROC: |z|<|a|

( 4.4)

a n , n 0
4.3 () z x(n) = n
b , n < 0

-1

X( z ) = b n z -n + a n z -n
n=

n= 0

a n
z

= +
n=1 b
n= 0 z

4.1 4.2
z
z
X( z ) =
+
b- z z- a

z-plane

|z|=|b|
|z|=|a|

ROC: |a|<|z|<|b|

z ROC
ROC |z| < |b| ROC
|z| > |a| ROC
|a| < |z| < |b|
a (causal pole)
(n0) b (anticausal pole)

4 z 44

ROC
ROC ROC
ROC
x(n)

n
( ) X(z)
x(n) X(z) ROC
n z

z ()
z
( n0) z
4.1 z 4.2
4.1
4.4 z x(n) = 1 - e-an n 0 a 0
2 5 4.1
z
z
X( z ) =
z -1 z - e -a
z(z - e -a ) - z(z -1)
=
(z -1)(z - e -a )
z(1 - e-a )
= 2
z - z(1+ e -a ) + e -a
ROC |z| > 1 |z| > e-a a > 0 e-a < 1 ROC
|z| > 1
4.5 z x(n) = 3a(n-1), n 1
4.1 x(n)
1

4 z 45

x1(n) = x(n+1) x1(n) = 3an, n 0


x1(n) 5 4.1
X1(z) =

3z
, ROC: |z| > |a|
z a

(shift) 2 4.2 x(n) = x1(n-1)


X(z) X1(z)
X(z) = z-1X1(z)
X1(z)

3
3z
=
X( z ) = z-1
z a z - a

2 n , - 2 n -1
4.6 z x(n) =
2 , n 0
x(n) x(n) n
x(n) = 2-2(n+2) + 2-1(n+1) + 2u(n)
x(n) = 0.25(n+2) + 0.5(n+1) + 2u(n)
u(n) (unit step) 1 n 0
4.1
2z
X(z) = 0.25z2 + 0.5z +
, ROC: |z| > 1
z-1

4.7 z FIR
h(n) = [ -1 0 2 0 -1] n=0
h(n)
h(n) = - (n) + 2(n-2) - (n-4)
ROC : z
H(z) = -1 + 2z-2 -z-4

ROC

4 z 46
x(n), n 0
(n)

1
2

1 = u(n)

n2

n
n n

(-)n

cos(n )

sin(n )

11

12

13

14

X(z)

10

X(z)

sin(n )
cos(n )

z
z1
z
(z 1)2
z(z + 1)
(z 1)3
z
z
z
(z )2
z
z+
z(z cos )
z 2 2 z cos + 1
z sin
z 2 2 z cos + 1

|z| > 1

|z| > 1

|z| > 1

|z| > ||

|z| > ||

|z| > ||

|z| > 1

|z| > 1

ze sin
z 2 2 e z cos + e 2
2

ze (ze cos )

z 2 ze cos + e
z 2 z cosh
cosh(n )
z 2 2 z cosh + 1
z sinh
sinh(n )
z 2 2 z cosh + 1
cz
c* z
+
2|c||p| cos(np + c)
z p z p*

|z| > e-

|z| > e-

|z| > cosh

|z| > sinh

4.1 z ()

1.
(linearity)

a {f(n)} + b {g(n)}
a, b

aF(z) + bG(z)

4 z 47

2.
(time shifting)

z k F( z )

f(n - k)
= 0

3. Differentiation

n f(n)

4.

f(-n)

dF(z)
dz
F( 1 z )

(time reversal)

(exponentiation)
6.

7. (convolution)

F(a 1 z)

anf(n)

5.
a

1 j z
F(e )G j d
e
2

f(n) g(n)

F(z)G(z)

f(n) g(n)

f(n - m) , m > 0

z m F(z) + f ( i)z i

i=1

f (n + m) , m > 0

z m F(z) f (i)z i

i=0

8. z

m1

4.2
z f(n) F(z) g(n) G(z)

z (Inverse z-Transforms)
z
z X(z)
Z -1

x(n) x(n) = Z {X(z)} X(z) x(n)


z
(partial fraction expansion) 4.1/4.2
z X(z)
-1

a 0 + a1 z + a 2 z2 . . . + a N z N
X( z ) =
b 0 + b1 z + b 2 z 2 . . . + b M z M
2

X( z ) =

a 0 + a1 z + a 2 z . . . + a N z
(z- p 1 )(z- p 2 ) . . . (z- p M )

(4.5)

4 z 48

N , M , M N p1, p2, ..., pM


(pole)

X(z)

X( z ) = A 0 +

A1z
A2z
A Mz
+
+ ... +
z - p1
z - p2
z - pM

(4.6)

A0 = X(z) z = 0

(4.7)

z - pi
Ai =
X( z )
z
z = p

(4.8)
i

pk
m X(z)
a 0 + a1 z + a 2 z 2 . . . + a N z N
X( z ) =
(z- p 1 )(z- p 2 ) . . . (z- p k ) m . . . (z- p M )

(4.9)

X(z)
X( z) = A 0 +

A1 z A 2 z
Cz
Cz
Cz
A z
+
+ . . . + 1 + 2 2 +. . .+ m m + . . . + M
z - p1 z - p 2
z - p k (z - p k )
(z - p k )
z - pM

(4.10)

A0 Ai Ci
1
d m i ( z p k ) m

Ci =
X( z )
m i
(m - i)! dz z
z = p

(4.11)
k

z2
4.8 z X(z) =
(z 0.5)(z 1)2

z = 1
X(z)

4 z 49

Cz
C2 z
Az
+ 1 +
z 0.5 z 1 (z 1)2

X(z) =

(#)

z2
(z 0.5)

=2
A A =
2
z (z 0.5)(z 1) z=0 .5
C1 i=1, m=2, p1=1 4.11
d (z 1)2

C1 =
X(z)
dz z
z=1
d z
=

dz (z 0.5) z=1
=

(z 0.5) z
(z 0.5)2

= -2
z=1

C2 i=2, m=2, p1=1 4.11


(z 1)2

C2 =
X(z)
z
z=1
z
=2
=
z 0.5 z=1
A, C , C (#) X(z) =
1

2z
2z
2z

+
z 0.5 z 1 (z 1)2

4.1 z
x(n ) = 2(0.5)n 2 + 2 n , n 0
z z X(z)

ROC z
z
X(z) =

z
z- a

4 z 50


ROC |z| > a
x(n) = an, n 0 x(n) = anu(n) ( 4.1)

ROC z < a
x(n) = - an, n < 0 x(n) = - anu(-n-1) ( 4.2)
ROC X(z)

z ROC

u(n) (unit step) n x(n) u(n)


x(n) n
u(-n-1) u(n) 4.1 u
(-n-1)

u(-n-1)

u(n)

-3 -2

-1

-2 -1

4.1

z
z z

h(n) z h(n) H(z) H(z)

4 z 51

(transfer function) z

H( z ) =

Y(z)
X(z)

(4.12)


y(n) = h(n) x(n) ( 7
4.2) z Y(z) = H(z)X(z) 4.12
z

1.
2. h(n)
3. H(z)
4. y(n) x(n)
z

4.9 y(n) = 0.5y(n-1) + x(n) h(n), H(z), y(n)


x(n) = 2u(n) (initial condition) y(n) 0 n=0
z
Y(z) = 0.5z-1Y(z) + X(z)
Y(z)(1-0.5z-1) = X(z)
Y(z)
1
z
=
=
X(z)
1 - 0.5z -1
z - 0.5
4.1 z
H( z ) =

h(n) = 0.5nu(n)

4 z 52

h(n)

z 3.4
z
2z
x(n) = 2u(n) 4.1 X( z ) =
z-1
z
2z
2z2
Y(z) = H(z)X(z) =

=
z- 0.5 z - 1
(z- 0.5)(z- 1)

n
)

n
)

n
)

n
4.2 4.9

2z2
2z
4z
Y(z) =
= +
(z- 0.5)(z- 1)
z- 0.5 z - 1

4 z 53

y(n) z Y(z)
y(n) = Z-1{Y(z)} = - 2 (0.5)nu(n) + 4u(n)

1. (transient response) 0 n
- 2 (0.5)nu(n)
2. (steady-state response) n
4u(n)

z

H
4.10 4.8 y(n) = 0.5y(n-1) + x(n)
z
(z) H( z ) =
y(n) x(n) = sin(n/6)
z - 0.5
- z x(n) 4.1 9
z sin 6
sin = 1 ,
X(z) = 2
6 2

z 2 z cos 6 + 1
z
= 2 2
z 3z + 1
z
2
=
3 j
3 j

z
+
z

2 2
2 2
-
=

Y(z) = H(z)X(z)
z2

(z 0.5) z

3 j
3 j
z
+
2 2
2 2

cos 6 =

3
2

4 z 54

= A0 +

A1z
A2z
A3z
+
+
z 0.5 z 3 j z 3 + j
2 2
2 2

- A 0 , A 1 , A 2 , A 3
A 0 = Y(0 ) = 0
z 0.5
A1 =
Y(z)
p1 = 0.5;
z
z=0.5
z
= 0.65108
= 2 2
z 3 z + 1 z=0 .5
z 3 j

3 j
2
2
p2 =
+ ; A2 =
Y(z)
2 2
z

z= 3 2 + j 2

(z 0.5) z 3 2 + j 2

3+j
2 + (2 3 2 ) j

z= 3 2 + j 2

= 0.32554 j0.73831

z 3 + j
2
2
3 j
Y(z)
; A3 =
p3 =

z
2 2
z=

(z 0.5) z 3 2 j 2

3 j
2 2

z= 3 2 j 2

3j
= 0.32554 + j0.73831
2 (2 3 2 ) j
(conjugate)
(p2 = p3* )
=

4 z 55

(A2 = A3* )

- A 0 , A 1 , A 2 , A 3
0.65108 z ( 0.32554 j0.73831)z ( 0.32554 + j0.73831)z
Y ( z) =
+
+
z 0.5
z 3 2 j2
z 3 2 + j2
- z 4.1 5 1 14
2 3 ( A2 p2 A2 = 0.8069-1.986 p2 =
1/6 )

y(n) = 0.65108(0.5)n + 1.6138 cos( 6 n 1.986)


= 0"
.65108
0.%
5)n + 1.6138 sin( 6 n 0. 4153 )
$#($
"$$$#$$$
%

4.9 4.10
( z )
()



( z )


3
H(z)
ROC
4.1 4.3

3

4 z 56

1. IIR
-
- ROC (
ROC
ROC ROC
)
- ()
2. IIR
-
- ROC
- ()
3. IIR
-
- ROC

-

4. FIR
-
- ROC ( FIR ROC z=0
FIR z=

)
-

ROC (unit circle)
4.3
h(n)
3.20 Lim h(n) = 0
n

4 z 57

unit circle

unit circle

unit circle

unit circle

unit circle

unit circle

4.3 ROC ( )


H( z ) = A 0 +

A1z
A2z
A Mz
+
+ ... +
z - p1
z - p2
z - pM

(4.13)

z
h(n) = A0(n) + A1(p1)n + A2(p2)n + + AM(pM)n , n 0

(4.14)

n h(n) (pi)n

()

4 z 58


h(n) n

z
z
+
ROC
z - 0.8 z -1.25

4.11 H(z) =

2 0.8 1.25 ROC



1. ROC |z| < 0.8
ROC
2. ROC |z| > 1.25
ROC
3. ROC 0.8 < |z| < 1.25 0.8
1.25 ROC

IIR
ROC
IIR

5 DTFT 59

5
DTFT

2


..., -2fs, -fs, 0, fs, 2fs, ...

DTFT
(Discrete-Time Fourier Transform)

x(t) X(f)

X( f ) = x(t)e- j t dt
-

(5.1)


t = nT T = 1/fs

t nT

X( f ) = x(nT)e - j nT
n = -

(5.2)

5 DTFT 60

x(nT)
x(n) 2 T 2f/fs
fs T
T
= T = 2f/fs

f = f/fs = 2f

(5.3)
(5.4)

f (normalized
frequency) f
(cycle/sample)
(radian/sample) f
Hz n

X( ) = x(n)e - j n
n = -

(5.5)

X ej
ej X() X(ej)
ej

X( e j ) = x(n)e- j n
n = -

(5.6)

DTFT (Discrete-Time
Fourier Transform) X(ej)

ej
2 ej
ej 5.1

5 DTFT 61

e j '
'

5.1 ej
ej
2 X(ej) ej
2
5.2
DTFT
1.
2.
3.
( )
| X(ej ') |

...

...
-2
-1
-fs

-
-.5
-fs/2

0
0
0

.5
fs/2

2
1
fs

3
1.5
3fs/2

4
2
2fs

'
f'
f

5.2





(
)

5 DTFT 62

5.3 = 2f/fs

= 2 f = fs

= f = fs/2
fs

5.2
5.2




DTFT 5.6


, aliasing,
(imaging), ( 11)

(Discrete Sinusoidal Signal)


x(t) = sin(2ft
+ ) sin(t + ) f ()



x(n) = sin(2fn + ) x(n) = sin(n + )

(5.7)

f (cycle/sample)
(radian/sample) 1 1

5 DTFT 63

= 1/f = 2/

(5.8)

5.3 =0.5
0.5
4 2 1 4
=0.15
0.15 1 2/0.15 = 13.333

0.5

=4

=13.33

x(n) = sin(0.5n)

x(n) = sin(0.15n)

5.3

DTFT z
z x(n)

X( z ) = x(n)z- n
n = -

DTFT DTFT
z z

5 DTFT 64

X( e j ) = X(z)

(5.9)

z = ej

z z ej

z
(DTFT ) z=ej
(Frequency Response)
Y(z) = H(z)X(z) z=ej
Y(ej) = H(ej)X(ej)

(5.10)


H(ej) H(ej) (frequency response)
H(ej) DTFT h(n)
DTFT
h(n) H(ej)
H
H(e j ) = A(e j ) e ( e

(5.11)

H(ej)

A(ej) (ej) A
(ej) (magnitude response) (ej)
(phase response)
z

z - 0.5
x(n) = sin(n/6)

5.1 4.10 H( z ) =

z = ej

5 DTFT 65

e j
H( e ) = j
e - 0.5
j

x(n) = sin(n/6) =
/6 H(ej)
H( e

j / 6

e j /6
) = j / 6
e - 0.5
3 / 2 + j0.5
=
3 / 2 + j0.5 - 0.5
= 1.6138e - j 0.4153

/6 1.6138
-0.4153 -23.8
y(n) = 1.6138sin(n/6 - 0.4153)
4.10



5.4
DTFT 0 fs/2
() 0
- /

= [0,]


- ()
0 fs/2
0 fs/2
= 0

5 DTFT 66

fs/2

0 fs/2 0
5.5

|H|

-2

4 '

-2

4 '

H
()

5.4 H( z ) =

z
z - 0.5

|H|

H
()

5.5 H( z ) =

'

fs/2

z - 0.5

5 DTFT 67

function[] = freqres(a,b,fs,db)
if nargin == 3, db='n'; end
fnorm = 0:1/1000:0.5;
f = fnorm*fs; w = 2*pi*fnorm;
H = polyval(a, exp(j*w)) ./ polyval(b, exp(j*w));
if

db=='db' | db=='dB'
plot(f,20*log10(abs(H)));
ylabel('Magnitude Response (dB}') ;
else
plot(f,abs(H));
ylabel('Magnitude Response');
end
grid on

'db'

20log(|H|)

5.1 freqres.m

function[] = freqres2(H,fs,db)
if nargin == 2, db='n'; end
fnorm = 0:1/1000:0.5;
f = fnorm*fs; w = 2*pi*fnorm;
z = exp(j*w);
for i=1:length(H)
if H(i)=='*' | H(i)=='/' | H(i)=='^'
Hnew=[Hnew,'.'];
end
Hnew=[Hnew,H(i)];
end
H=eval(Hnew);
if

db=='db' | db=='dB'
plot(f,20*log10(abs(H)));
ylabel('Magnitude Response (dB}');
else
plot(f,abs(H));
ylabel('Magnitude Response');
end
grid on

Hnew
H
*, / , ^
Eval

Hnew

5.2 freqres2.m

5.1 5.2 Matlab
5.1
z
[1 0] 1
5.1 H( z ) =
z - 0.5
[1 -0.5] Matlab polyval
fs=1
>> freqres(1, [1, -0.5], 1)

5 DTFT 68

freqres a b=1
DTFT 0

5.2 (
) eval
z
H( z ) =

z - 0.5
>> freqres2('z/(z-0.5)', 1)
dB
'db' freqres(1, [1, -0.5], 1, 'db')


7 8

(fs)
fs fs
0-100Hz 10kHz 0-100Hz
1 50 2%

(fs/2= 5kHz)
A/D converter

fs = 220 Hz 0-100 Hz
90% (fs/2= 110Hz)
aliasing

6 DFT FFT 69

6
DFT FFT

FFT

DFT FFT FFT



(
)



6.1 6.2

Fourier Transform (FT)




Discrete Time Fourier Transform (DTFT)



Fourier Series (FS)




Discrete Fourier Series (DFS)
Discrete Fourier Transform (DFT)

( )
6.1

6 DFT FFT 70

6.1 6.2


DFT

(FT)

X( f ) = x(t) e- j t dt
-


(DTFT)
= 2
(FS)
= T


(DFS)

(DFT)

()

x ( n ) = X(f) ej t df

X ( ej' ) = x(n)e- j' n

x ( n ) = X(e j' ) ej' t

1 T
c( k ) = x(t) e- jk0 t dt
T 0

x ( t ) = c(k) e jk0 t

n = -

k = -

c(k)
k0
N1

X( k ) = x(n) e
n= 0

-j2 kn/N

d'
2

1 N 1
X(k) ej2 kn / N
x(n ) =
Nk= 0

=
= N samples

6.2

DFT (Discrete Fourier Transform)


6.1 DFT


( )

6 DFT FFT 71

DFT DFS DFT DFS


DFS (Fourier Series)


DFT DFS

1.
2.
1 ( 0 N-1 )


DFT DFS
N
DFT
N

x(n) X(k) DFT


k N

DFT; N

x(n) X(k)
6.2 x(n) X(k)
N1

X( k ) = x(n) e- j2kn/ N
n= 0

(6.1)

WN = e-j2/N N
N WN DFT

N1

X( k ) = x(n) WNkn
n= 0

(6.2)

6 DFT FFT 72

X( 0 ) WN0
0

X
(
1
)
WN

.. = WN0
. .

.
.

X( N -1 ) WN0

WN0

WN0

WN1 x1
WN2 x1

WN1 x 2
WN2 x 2

WN( N-1) x1

WN( N-1) x 2

..
.

..
.

WN0

x( 0 )

WN1 x ( N-1) x (1 )

WN2 x ( N-1) ..
.
..


( N-1) x ( N-1)

x ( N -1 )
WN

( 6.3)

function X = dft(x)
N = length(x);
c = j*2*pi/N;
for k=0:N-1
X(k+1) = sum(x.*exp(-c*k*[0:N-1]));
end

6.1 dft.m DFT

DFT
X(k) DFT 6.1

) xa(t) ()

() Xa(f) Xa(f)
fmax
) xa(t) fs fs > 2fmax
xb(n)

Xb(ej) DTFT
= - Xa(f)
-fs/2 fs/2 aliasing
) Xb(ej) N 1
2/N

X(k)
(
)
) 1
n k 0 N-1 DFS
DFT

6 DFT FFT 73

x(n) xa(t)
X(k) Xa(f)
DFT

fmax
2fmax
|Xa(f)|

xa(t)

)
t

xb(n)

FT

|Xb(f)|
N 1

DTFT

0
0

fs/2

fs

-N -N/2 0

N/2

x(n)

fmax

DFS

-fs/2
-

|X(k)|

N 1

x(n)

|X(k)|

)
0

N 1

DFT;N

6.1 DFT
DFT
DTFT
DFT DTFT


DFT

6 DFT FFT 74

DFT DTFT 0
2 0 fs
0 fs/2
k = 0 N/2 N
k = 0 (N+1)/2 N
function

dftspec(x,fs)

% fs fs = 1

if nargin < 2, fs=1; end;


N = length(x);

%
% fs

N_plot = (N+1)/2;
f = [0:N-1]*fs/N;

X = dft(x);
plot(f(1:N_plot),abs(X(1:N_plot)));
grid on

6.2 dftspec.m DFT

(zero padding)
x(n)
DFT

6.2
DFT
DTFT
|X(k)|
x(n)
N=8
DFT;N
0

N-1

N-1

M-1

M=15
DFT;M

n
M-1
M>N

6.2 DFT

6 DFT FFT 75


DTFT DFT
()


(finite-energy signal)
(energy spectrum)
Sx(k) = |X(k)|2

(6.4)

Sx(k) x(n) X(k) DFT


x(n) DTFT Sx() = |X(ej)|
[3]

(stationary signal)

(random signal)
(

)



(power spectrum) ( [3])
1
Px(k) = |X(k)|2
N

(6.5)


()

Sx(k)
Parseval

6 DFT FFT 76
N-1

x(n) 2 =

n =0

1 N-1
X( k ) 2
N k =0

(6.6)

dB
1
Px(k) = 10 log X(k) 2 (dB)
N

(6.7)

) x(n)

n
) |X(f)|

dftspec(x,fs)

f (Hz)
) Px(f) (dB)

dftpsd(x,fs)

f (Hz)
6.3 DFT
function dftpsd(x,fs)
if nargin < 2, fs=1; end;
N = length(x);
N_plot = (N+1)/2;
f = [0:N-1]*fs/N;
X = dft(x);
plot(f(1:N_plot),10*log10(abs(X(1:N_plot)).^2/N));
grid on

6.3 dftpsd.m dB DFT

6 DFT FFT 77

6.3 DFT
x(n) Matlab 1000
11025 Hz ( Matlab )

1000
fs/N = 11025/1000 = 11.025 Hz
dB

stationary

FFT (Fast Fourier Transform)


DFT
DFT FFT
DFT FFT
DFT FFT

DFT N
N2 CMACs (CMAC Complex Multiplication and Accumulation,
1 CMAC 2
)
N FFT CMAC
DFT FFT
FFT radix-2
decimation-in-time ()
DFT 6.2
N1

X( k ) = x(n) WNkn
n= 0

WN = e-j2/N k = 0, 1, ... N-1

N X(k ) n
n

6 DFT FFT 78
N
1
2

N
1
2

X(k ) = x(2 n )WN2 nk + x(2 n + 1)WN(2 N+1) k


n =0$#$
n =0 $$#$$%
"
% "

x(0),x(2),x(4),

(6.8)

x(1),x(3),x(5),

N
1
2

N
1
2

n =0

n =0

X(k ) = x(2 n )WN2 nk + x(2 n + 1)WN2 nk WNk

(6.9)

WNab a b 0
W N
ab
N

W =e

2
ab
N

=e

2
N

= WNab

(6.10)

WN2nk WNnk 6.9


2

N
1
2

N
1
2

k
X( k ) = x(2 n )WNnk + x(2 n + 1)WNnk W
N
&
n =0$#$
n =0 $
"
%2 "
$#$$
%2

DFT N
DFT N

(6.11)

X(k)
DFT N/2 x(0), x(2), , x(N-2)
x(1), x(3), , x(N-1)
DFT 6.11
DFT N/2 2

CMAC
CMAC
(N/2)2
N 2
N2

2 =
( N
2
2
N2

N N
2
N )
W(k) DFT N DFT N/2
CMAC DFT

6 DFT FFT 79

N/2 6.11 DFT


N/4 CMAC
DFT 2 DFT 2

1

x(n) 2

(6.12)

X( k ) = x(n) W2kn
n= 0

W20 = 1 W21 = e- j = -1
X(0) = x(0) + x(1)
X(1) = x(0) - x(1)

} (6.13)

FFT

FFT
(butterfly diagram)
6.1
6.1 FFT N=8
DFT 8 DFT 4
6.4
x(0)
x(1)
x(2)

X(0)
X(1)
X(2)
8
DFT

x(7)

X(7)

x(0)
x(2)
x(4)
x(6)

4
DFT

x(1)
x(3)
x(5)
x(7)

4
DFT

W48
W58
W68
W78

X(0)
X(1)
X(2)
X(3)

W08
W18
W28
W38

X(4)
X(5)
X(6)
X(7)

6.4 DFT 8 DFT 4



4

W 84

W 8

6 DFT FFT 80

6.4
WN
WNk + N/2 = WNk WNN/ 2 = WNk (-1) = - WNk

(6.14)

6.14
W84 = - W80 , W85 = - W81 , W86 = - W82 , W87 = - W83

(6.15)

6.4 6.5
DFT 4 DFT 2 6.6
6.7 6.7
FFT N
FFT N

x(0)
x(2)
x(4)
x(6)

X(0)
X(1)
X(2)
X(3)

4
DFT

x(1)
x(3)
x(5)
x(7)

W08
W18
W28
W38

4
DFT

-1
-1
-1
-1

X(4)
X(5)
X(6)
X(7)

6.5 DFT 8 DFT 4


x(0)
x(2)
x(4)
x(6)

4
DFT

Q1
Q2
Q3
Q4

x(0)
x(4)

2
DFT

x(2)
x(6)

2
DFT

Q1
Q2
0

W4
1
W4

6.6 DFT 4 DFT 2

-1
-1

Q3
Q4

6 DFT FFT 81

X(0)

x(0)
x(4)

X(1)

-1
0

x(2)

W4

x(6)

W4

-1

X(2)

-1

X(3)

-1

x(1)

W8

x(5)

W8

-1

X(4)

-1

X(5)

-1

X(6)

-1
0

x(3)

W4

x(7)

W4

-1

-1
2 DFT

W8
3

-1

4 DFT

W8

-1

X(7)

8 DFT

6.7 FFT 8
FFT
1. X(0), X(1), ..., X(7)
x(0), x(4), x(2), x(6), x(1), x(5), x(3), x(7)

0
4
2
6
1
5
3
7

000
100
010
110
001
101
011
111

0
1
2
3
4
5
6
7

000
001
010
011
100
101
110
111

6 DFT FFT 82

(bit- reversed
order) FFT


2. W W8k

W40 W80 W41 W82

(6.16)

W8k W8k k

FFT 8 FFT N

3. FFT N log2N
N CMAC's ( N
)
CMAC FFT N = Nlog2N

(6.17)

4. radix-2 N 2b b
2b

DFT 1024 FFT


6.2 CMAC
1024
DFT

CMAC N2 = 1024x1024 106 CMAC


FFT

CMAC Nlog2N = 1024x10 104 CMAC


FFT DFT 1024 100
FFT

CMAC radix-2

FFT [3], [8]





FFT [8]

6 DFT FFT 83

Matlab fft fft


dft(x) dftspec.m dftpsd.m ( 6.2 6.3) fft(x)
fftspec.m fftpsd.m fft


x(0)
x(4)
x(2)
x(6)
x(1)

for 1 (i=1)

for 1 (i=1)

for 1 (i=1)

X(0)
X(1)

-1

for 2 (i=3)

W4

-1

X(2)

-1

X(3)

-1

for 3 (i=5)

W4

for 2 (i=5)

W8

-1

X(4)

-1

X(5)

-1

X(6)

x(5)
x(3)

W8

-1

for 4 (i=7)

W4

-1

x(7)

-1

while 1
M=1

W8
3

W4

-1

while 2
M=2

W8

-1

X(7)

while 3
M=4

6.8 DFT 8 6.4


6.4 Matlab FFT radix-2
N FFT
2 for while DFT 8
6.8
6.2 FFT DFT 100
1024 myfft.m

dft.m
( 6.1) 3 Matlab

6 DFT FFT 84

6.4 FFT
DFT
FFT [1] DSP
TMS320 [15]
function X=myfft(x)
N=length(x);
b=log10(N)/log10(2);

WN

W=exp(-j*2*pi*[0:N/2-1]/N);
xold=x;
for i=0:N-1
index_old=i;
index=0;
for j=1:b
index=index*2;
a=rem(index_old,2);
index_old=(index_old-a)/2;
index=index+a;
end
x(index+1)=xold(i+1);
end

M=1;
while M < N,
M2 = 2*M;
for i=1:M2:N
xtemp1 = x(i:i+M-1);
xtemp2 = x(i+M:i+M2-1).*W(1:N/M2:N/2);
x(i:i+M-1) = xtemp1 + xtemp2;
x(i+M:i+M2-1) = -xtemp2 + xtemp1;
end
M=M2;
end
X=x;

6.4 myfft.m FFT

DFT (IDFT, Inverse Discrete Fourier Transform)


IDFT DFT
IDFT DFT
x = IDFT(X) =

1
(DFT(X*))*
N

(6.18)

* conjugate DFT X*

6 DFT FFT 85
N1

DFT(X*) = X( k ) * e j2kn/ N
k =0

1
1 N1
1 N1
j2 kn / N
j2 kn / N *
(DFT(X*))* = {X( k )* e
=
X( k ) e
}
N k =0
N k =0
N
IDFT(X) = x(n) 6.18
IFFT IDFT
FFT
1
x = IFFT(X) = N (FFT(X*))*

(6.19)

DFT
X1=DFT(x1) X2=DFT(x2)
1.
DFT ; N

a1x1(n) + a2x2(n) a1X1(k) + a2X2(k)

(6.20)

2.
DFT ; N

x1(n-m) e-j2m/N X1(k)

(6.21)

FFT
(spectrm analyzer)
()

FFT 6.5
6.9
N
6.10 )

6 DFT FFT 86

A/D

6.9

. . . x (n)
()

x1

x2

x3

Px1

Px2

Px3

...
...

Px1 , Px2 , Px3 ,

N
x1

M
x2

Px1

x3

Px2
Px3

Pavg1

...

x4
Px4

Px5

Px6 . . .

Pavg2
Pavg1 , Pavg2 , Pavg3 ,

6.10
6.10 )
( )

6 DFT FFT 87

1 ( )
1
6.3 )
K

Pavg ( f ) =

1 K
Pxi ( f )
K i=1

(6.22)


6.10 )
M 3 (K = 3)
Averageing Modified Periodogram Welch[3]
N, M, K
) N (low resolution) N


) K K

) M M

6.3 [2] DSP


TMS320
40 kHz, N=128, M=64, K=8
1
0 20 kHz ( )

1 = NK - M(K-1)

(6.23)

6 DFT FFT 88

(128)(8) - (64)(7) = 576


576 / fs = 576/40000 = 14.4 ms
14.4 ms
( 14.4 ms )
10
- 20 ms
2

xi(n) (window
function)
FIR

(Hamming window)

w(n) = 0.54 0.46 cos(

2 n
) , n = 0, 1, 2, , N-1
N 1

xi,new(n) = xi(n) w(n)

(6.24)
(6.25)

w(n) 1 N 6.22
1 6.11

n
6.11 N=50

6 DFT FFT 89

Welch
averaging modified periodogram [3]
Matlab DSP toolbox psd

(Fast Convolution)

FIR

y(n) = h(n) x(n)

(6.26)

(linear convolution) N
h(n) N CMAC's 1

N

FFT
fast convolution
DTFT

Y = DTFT(y) = DTFT(h) DTFT(x)
y = IDTFT(Y) = IDTFT{ DTFT(h) DTFT(x) }

(6.27)

DTFT IDTFT
DTFT

DTFT IDTFT DFT IDFT
DFT IDFT h x


(circular convolution)
~y = h x
~y = IDFT{ DFT(h) DFT(x) }

(6.28)

6 DFT FFT 90

~y = IFFT{ FFT(h) FFT(x) }

(6.29)

h x N
6.4

6.4 3 x(n) = [1 2 3 2 1] h(n) = [ 4 2 1] ~y


x h

n
0 1 2 3 4 5 6
0 1 2 3 4
x(0)h(n) = 4 2 1
4 2 1
x(1)h(n-1) =
8 4 2
8 4 2
x(2)h(n-2) =
12 6 3
12 6 3
x(3)h(n-3) =
8 4 2
2
8 4
x(4)h(n-4) =
4 2 1
2 1
4
y(n) = 4 10 17 16 11 4 1
8 11 17 16 11
~y [ 8 11 17 16 11 ]
5

n=5
n=0

n=6

n=1
2
2
y = [ 4 10 17 16 11 4 1 ]
~y = [ 4 10 17 16 11 ] + [ 4 1 0 0 0 ] = [ 8 11 17 16 11 ]

FFT Matlab 6.6
function y=circonv(x,h)
Nx=length(x); Nh=length(h); N = max(Nx,Nh);
h = [h, zeros(1,N-Nh)];
x = [x, zeros(1,N-Nx)];
x h
y = conv(x,h);
y = [y,0];
y = y(1:N) + y(N+1:2*N);

6.5 circonv.m

6 DFT FFT 91
function y=circonv2(x,h)
Nx=length(x); Nh=length(h); N = max(Nx,Nh);
h = [h, zeros(1,N-Nh)];
x = [x, zeros(1,N-Nx)];
y = ifft( fft(x) .* fft(h) );

6.6 circonv2.m FFT


N-1
( [17 16 11]
)
overlap-save
overlap-add 6.12 6.13
x(n) x(n)
L + N
-1 L N-1 N h(n)
N-1 6.12 x1(n), x2(n), x3(n),
x1(n), x2(n), x3(n), h(n)
y1(n), y2(n), y3(n), L+N-1 yi(n)
N-1
L

x 1(n)
N-1

N-1

x 2(n)
N-1

x 3(n)

y 1(n)


N-1

y 2(n)

N-1

y 3(n)

N-1

6.12 overlap-save

6 DFT FFT 92

X 1(n)


N-1

X 2(n)


N-1

X 3(n)

N-1

y 1(n)

N-1

y 2(n)

N-1

y 3(n)

6.13 overlap-add
L
x(n) h(n)
L+N-1
L

~y = IFFT{ FFT(h) FFT(x) }
DFT 2 ( 2Lxlog2Lx CMAC), DFT
( Lx CMAC), IDFT 1 ( Lxlog2Lx CMAC)
(3Lxlog2Lx + Lx) CMAC
1 Lx = L+N-1
3(L+N-1)log2(L+N-1) + (L+N-1) CMAC L

(6.30)

()
FFT(h)
FFT(h)

6 DFT FFT 93

2(L+N-1)log2(L+N-1) + (L+N-1) CMAC L

(6.31)

L+N-1 2b b

N MAC 1
LN MAC L
(6.32)
6.30 6.31 (CMAC)
6.32 (MAC)

1 CMAC = 1 1
= ( 4 2 ) ( 2 )
= 4 4
1 CMAC = 4 MAC
(6.33)
6.5 N=1024
(fast convolution)
2048
L L+N-1 = 2048
L = 2048 - N + 1 = 2048 - 1023 = 1025
FFT(h)
L 6.31
2(2048)(log22048) + 2048 = 2(2048)(11) + 2048 CMAC
= 47104 CMAC
= 4(47104) = 188,416 MAC
L
6.32 (1025)(1024) = 1,049,600 MAC
1049600/188416 = 5.57
L+N-

6 DFT FFT 94

1= 4096 30 !
(delay)


- FIR
( )

- 1 L

-

6.6 6.5
10 kHz CMAC
6.4 47,104 CMAC
47104
= 45.955 CMAC
1025
1025
fs = 10kHz 10,000
(45.955)(10000) = 459,550 CMAC

7 FIR 95

7
FIR


FIR IIR FIR
IIR


7 8

FIR
h(n) FIR h(n) N
N-1 N-1
H(z) z-(N-1)


(linear phase)

FIR

H(e j ) = A(e j ) e j ( e

(7.1)

A


= -a

(7.2)

7 FIR 96

a

(phase delay)
Tp = - /

(7.3)

Tp a
phase distortion
, , ,
, /,

7.1
7.1
3 = 0.1, 0.2, 0.3
x(n) = sin(0.1n) + sin(0.2n) + sin(0.3n)
7.1 )

H(ej) = e- j10n/ = -10/

= 0.1, 0.2, 0.3
1, 2, 3 7.1 )
7.1 )
Tp

Tp (Tp
)

w1=0.1*pi; w2=0.2*pi; w3=0.3*pi;
n=0:50;
x=sin(w1*n)+sin(w2*n)+sin(w3*n);
d1=-1;
d2=-2;
d3=-3;
y=sin(w1*n+d1)+sin(w2*n+d2)+sin(w3*n+d3);
d1=-1;
d2=-2;
d3=-1;
y2=sin(w1*n+d1)+sin(w2*n+d2)+sin(w3*n+d3);
subplot(311); plot(n,x); grid on
subplot(312); plot(n,y); grid on
subplot(313); plot(n,y2); grid on

7.1 linearph.m

7 FIR 97

Tp

n
)

n
7.1 7.1


(Tp)
(group delay)
Tgroup =

d
d

(7.4)




= -a + b

a b

(7.5)

7 FIR 98


FIR 7.5
h(n)
1 h(n) (symmetric) N
h(n)
h(n) = h(N-1-n), n=0, 1, ..., N-1

(7.6)

N=7 h(0)=h(6), h(1)=h(5), h(2)=h(4), h(3)


M = (N-1)/2

H(ej) = Hr()e-jM

(7.7)

M-1

Hr() = h ( M ) + 2 h(n)cos[ (M - n)]


n=0

Hr() -(N-1)/2
7.2 FIR 1
3

2 h(n) (symmetric) N
1 h(n) = h(N-1-n) N=8
h(0)=h(7), h(1)=h(6), h(2)=h(5), h(3)=h(4)

H(ej) = Hr()e-j(M+0.5)
M-1

Hr() = 2 h(n)cos[ (M + 0.5- n)]


n=0

(7.8)

7 FIR 99

= Hr()=0

3 h(n) (antisymmetric) N
h(n)
h(n) = - h(N-1-n), n=0, 1, ..., N-1

(7.9)


H(ej) = Hr()ej(-M+/2)

(7.10)

M -1

Hr() = 2 h(n)sin[(M - n)]


n =0

=0 Hr()=0
, ,
4 h(n) (antisymmetric) N
3 h(n) = - h(N-1-n)

H(ej) = Hr()ej(-(M+0.5)+/2)

(7.11)

M-1

Hr() = 2 h(n)sin[ (M + 0.5- n)]


n=0

=0 Hr()=0
,
FIR 3 4
(differentiator) Hilbert /2 90

7 FIR 100

1
N

3
N

2
N

4
N

7.2 FIR 4
7.1
FIR 1 ( 7.7)
h(n) N N = 2M+1 ( N,M
)
N-1

H( e j ) = h(n) e- j n
n=0
2M

= h(n) e- j n
n=0

2M

= e - j M h(n) e j (M-n)
n=0


M-1
2M

H( e j ) = e - j M h ( M ) + h(n) e j (M-n) + h(n) e j (M-n)

n=0
n=M+1

3 k n = N-1-k

7 FIR 101

M-1

n=0

k=M-1

H( e j ) = e - j M h( M ) + h(n) e j (M-n) + h(N - k -1) e - j (M-k)

k n ( n=k)
h(n) h(n) = h(N-n-1)

{
{h( M) +

M-1

M-1

n=0

n=0

H( e j ) = e - j M h ( M ) + h(n) e j (M-n) + h(N - n -1) e - j (M-n)


= e - j M

M-1

h(n) e

j (M-n)

n=0

M-1

+ h(n) e- j (M-n)
n=0

M-1

H( e j ) = e - j M h ( M ) + 2 h(n) cos[ (M - n)]


n=0

7.7

(Window Method)
FIR

, ,
- f
-1 1 5

(LPF),
(HPF), (BPF), (BSF)

7.3 (cutoff frequency) c
a
b

7 FIR 102
|D(ej')|

LPF

|D(ej')|

HPF

1
'
-

-'c

BPF

'c

'

|D(ej')|

'c

-'c

|D(ej')|

BSF

1
'

-'b

-'a 0 'a

'

-'b

-'a 0

'a

7.3
d(n) D(ej)

7.3
IDTFT
d(n) = IDTFT{ D }
1
= D(e j ) e j n d
2 -
1 C
j n
=
(1)e d
2 - C
C

e j n
e j C n e j C n
=
=

jn
2

2 jn

C
d(n) =

sin( C n )
, - < n <
n

(7.12)

n=0 d(n) d
(0)

7 FIR 103

d(sin( C n)
C
n 0
dn
d(0) =
=
d( n)

lim
n0 dn
lim

(7.13)

d(n) IDTFT
7.1 d(n)

(LPF)
(HPF)
(BPF)
(BSF)

d(n), - < n <


sin( C n )
n
sin( C n )
( n )
n
sin( b n ) sin( a n )
n
sin( b n ) sin( a n )
( n )
n

d(0)
C

1 C

b a



1 b + a

7.1
d(n) LPF
D(ej)=1 d(n)=(n) d(n)
HPF d(n) LPF LPF
HPF
DLP(ej) + DHP(ej) = 1

(7.14)

z d(n)
dLP(n) + dHP(n) = (n)

(7.15)

7 FIR 104

BPF
BSF

DBP(ej) + DBS(ej) = 1
dBP(n) + dBS(n) = (n)

(7.16)
(7.17)

BPF
LPF

BPF
LPF BPF
DBP(ej) = D LP ( e j ) = D LP ( e j ) =
c

z dBP(n) = d LP ( n ) c = b d LP ( n ) c = a

(7.18)
(7.19)

d(n) 7.1
d(n)
d(n) n -
d(n)


7.3


- (pass-band ripple, pass)
1 dB
Apass = 20log

1 + pass
1 - pass

(dB)

(7.20)

- (stop-band attenuation, Astop)


1 dB
Astop = - 20logstop (dB)

(7.21)

7 FIR 105

- (transition band width, f)


- (cutoff frequency, fc) 0.5

IIR 3 dB

1.
7.2 Astop
stop pass stop pass pass
stop Astop pass
Astop
2.
f N 7.2
w(n), n = 0, 1, ..., N-1
f
f ( ) N

stop Apass stop Apass
Kaiser
3. (LPF, HPF, )
d(n) 7.1
d(n-M)
4. d(n) M M=(N-1)/2
w(n) 2 N

h(n) = d(n - M)w(n) , n = 0, 1, ..., N-1

(7.22)

N FIR
1 d(n) w(n)
N

7 FIR 106

|H(f)|

1 + pass

|D(f)|

Apass

1 - pass

f '

1/2
stop

Astop

fs / 2

fpass fc fstop

7.4 FIR

pass

Astop

-20logstop (normalized)

(dB)

(rectangular)

(Hanning)

8.9%

21

0.63%

44

(Hamming)

0.22%

53

(Blackman)

0.02%

74

(Kaiser)

2/N

w(n), n=0,1, .. N-1


N 1
)
( M=
2
1

2 n
)
N 1
2 n
4/N
0.54 0.46 cos(
)
N 1
2 n
4 n
6/N
0.42 0.5 cos(
) + 0.08 cos(
)
N 1
N 1
A 7.95
I0 ( 1 ( n M )2 / M 2 )
14.36 ( N 1)
I 0 ( )
4/N

0.5 0.5 cos(

7.2 [1], [3]

7 FIR 107

(Rectangular Window)
7.2 FIR LPF 500Hz
(f) 90 Hz fs = 2kHz
fs
c=2fc/fs = 2(500)/2000 = /2
f = f/fs = 90/2000 = 0.045
7.2 f = 2/N N = 2/0.045 = 44.4
N 44.4 f

N=45 ()
M = (N-1)/2 = 22
7.1 d(n) LPF d(n) =
d(n-M)

sin( C n )
d(n) M
n

d(n-M) = sin( C ( n M ))
(n M)

w(n) = 1, n=0, 1, .. N-1 h(n)


7.22
h(n) = d(n-M) w(n)
sin( C ( n M ))
, n=0, 1, , N-1
=
( n M )
sin( 2 ( n 22 ))
, n=0, 1, ,44
=
( n 22 )
h(n)
H(ej) = DTFT(h(n)) FFT H(k) = FFT(h(n))
7.5 freqres 5 |H|
f = (0, fs/2) 7.5 )

7 FIR 108



Gibbs
N
N 101 h(n) |H|
7.5 N=45

7.2 pass stop 0.089
N

N f f
f = f fs = 2fs/N = 2(2000)/101 = 40 Hz
|H|

h(n)

f (Hz)

n
) N=45

n
) N=101
7.5 7.2 ()

f (Hz)

7 FIR 109

7.2

h(n)
Matlab LPF d
w DSP Toolbox fir1 h(n)
N = h(n),
M = h(n)
c = 2fc/fs =

fc=500; fs=2000;
N=45;
M=(N-1)/2;
wc=2*pi*fc/fs;

n 0 N-1
d(n-M) 7.1
( LPF)

n=0:N-1;
d= sin(wc*(n-M))./(n-M)/pi;
d((N+1)/2) = wc/pi;

w=1;
h=d.*w;
freqres(h, 1, fs)

w(n) 7.2
() h(n) = d(n-M) w(n)

7.2 window.m FIR

(Hamming Window)
7.3 FIR N=101
7.2
d(n) LPF 7.1 M
d(n-M) =

sin( C ( n M ))
( n M )

M = (N-1)/2 = 50
7.2 w(n)
w(n) = 0.54 0.46 cos(

2 n
) , n=0, 1, .. 100
N 1

h(n) = d(n-M)w(n), n=0, 1, .. 100 N w(n) 7.2


H(ej) 7.6

7 FIR 110

7.2 f
= 4/N = 4/101 = 0.0396 f = f fs = 0.0396(2000) = 79 Hz
N 2
h(n)

|H|

f (Hz)

n
7.6 7.3 ( N=101)

f
7.2 pass stop 0.002
7.6 dB (20 log |H|)
7.7 dB
7.3
| H |2 (dB)

H ()

f (Hz)
7.7 (dB) 7.3

7 FIR 111

7.7
( )

1.
(piece-wise linear)


2. Matlab
- ( Matlab
angle )
0
- -3.14

- (
2
)

(Kaiser Window)


N

= min(pass,stop) =
A =
Apass = A = -20log (dB)

(7.23)

= shape parameter A
0,
A 21

= 0.5842(A - 21)0.4 + 0.07886( A 21), 21< A <50

A 50
0.1102(A - 8.7),

(7.24)

7 FIR 112

N f A f
N
A 7.95 + 1 , A > 21
14.36 f
N=
0.9

, A 21
f

(7.25)

N w(n) 7.2 I0
=0 (modified Bessel function of the first kind)
(x / 2)k
I0 ( x) =

k =0 k !

(7.26)


Matlab besseli(0,x) I0(x)
x 7.2 w(n)

alpha =
w = besseli(0,alpha*sqrt(1-(n-M).^2/M.^2))/besseli(0,alpha);

w(n) =0 A 21 w(n)=1
A 21

A > 21
7.4 LPF FIR
fpass = 4kHz, fstop = 5 kHz, fs = 20kHz, pass = 0.0058, Astop = 80 dB
stop stop = 10-80/20 = 0.0001
= min(pass,stop) = stop = 0.0001 A = -20log = 80 dB
A > 50
= 0.1102(A-8.7) = 0.1102(80-8.7) = 7.857

7 FIR 113

f = 5kHz - 4kHz =1kHz, f = f /fs = 1k/20k = 0.05


c=2fc/fs = 2(4.5k)/20k = 0.45
80 7.95
A 7.95
N=
+1 =
+ 1 = 101.3 N = 101, M=(N-1)/2=50
14.36 f
14.36 ( 0.05 )
d(n) LPF 7.3 c=0.45

I 0 ( 1 ( n M ) 2 / M 2 )
w(n) =
I 0 ( )
I 0 ( 7.857 1 ( n 50 ) 2 / 50 2 )
=
, n=0, 1, , 100
I 0 ( 7.857 )
h(n) = d(n-M) w(n)
sin( 0.45 ( n 50 )) I 0 ( 7.857 1 ( n 50 ) 2 / 50 2 )
h(n) =
, n=0, 1, , 100
( n 50 )
I 0 ( 7.857 )
dB 7.8
|H|2 (dB)

h(n)

f (Hz)

7.8
7.5 (BSF) fa=2kHz
fb=3kHz pass < 0.003, Astop > 45 dB, f < 200 Hz
fs = 10 kHz

7 FIR 114

pass Astop Astop


Astop

stop stop = 10 - 20 = 0.00562 pass (pass< stop)


pass = 0.003 = 0.3% 7.2
pass > 0.3%

) pass = 0.22%
f f/fs = 200/10000 = 0.02
N f = 4/N f N = 200
N = 201
) pass = 0.02%
N f = 6/N f N = 300
N = 301
) pass
= pass = 0.003 A = -20log() = 50.5 dB
A > 21 N
A 7.95
50.5 7.95
N=
+1 =
+ 1 = 148.2
14.36 f
14.36 ( 0.02 )
N = 149
N=149 M = (N-1)/2 = 74
A > 50
= 0.1102(A-8.7) = 0.1102(50.5-8.7) = 4.606
BSF 7.1
d(n) = ( n )

sin( b n ) sin( a n )
n

h(n) = d(n-M) w(n)


sin( b ( n - M )) - sin( a ( n - M )) I 0 ( 1 - ( n - M ) 2 / M 2 )

h(n) = ( n - M )

I0 ( )
( n - M )

7 FIR 115

M=74, =4.606, a=2fa/fs = 0.4, b=2fb/fs = 0.6, n=0, 1, , 148


7.2 d(n) BSF
d=(-sin(wb*(n-M))+sin(wa*(n-M))./(n-M)/pi;
d((N+1)/2) = 1-wb/pi+wa/pi;

f (Hz)

f (Hz)
7.9 7.5

7 FIR 116

(Frequency Sampling Method)






1 (N )
1. |D(ej)|
-
M M=(N-1)/2 7.1

D(ej) = e- jM |D(ej)|

(7.27)

2. D(ej) N
= 0 2 2/N
N H(k)
H(k) = D( e j ' )

'=

2 k
N

k = 0, 1, , N-1

2 k

H(k) = e - j N M |H(k)|
N-1

H(k) = e - j N k |H(k)|

(7.28)

|H(k)| |D(ej)| 0 2 2/N


N-1
2N/k |H(k)| e -j N k
H(k) N
3. H(k) IDFT
IFFT
h(n) = IDFT{ H(k) }
(7.29)

7 FIR 117

H(k) h(n) H(k)


h(n) H(k) IDFT

h(n)
h(n)

h(n) N h(n)
h(n)
H(ej) = DTFT{ h(n) }
D(ej) H D
DFT DTFT

D(ej), ,

2 kHz
7.6 FIR
10 kHz
c = 2fc/fs = 0.4
7.10
|H(k)| = [ 11 , 30 , 10 ]

40 k

H( k ) = H(k) e- j 41
1
|D(ej)|
0

0.4

1 11

1.6

10

|H(k)|
30

26

50 k

7 FIR 118

7.10

|H(ej)|

7.11
fs=10000;
H=[ones(1,11) zeros(1,30) ones(1,10)];
N=length(H);
k=0:N-1;
H=H.*exp(-j*pi*(N-1)*k/N);
h=real(ifft(H));
freqres(h,1,fs)

7.3 freqsam.m FIR


h(n) = Real( IFFT{H(k)} )
Matlab 7.3
7.11
0.15
16.5 dB 50

1) h(n)

2) 0 1 0
1 7.6 0.3


[3]
7.8

7 FIR 119



7.7
1

2500

5000

f (Hz)

N=41 fs=10 kHz h(n) |H(ej)|


fs=10kHz 5 kHz =
0 - 2

|D(ej)|

7.12
|H()|

2
+2

j '
D( e ) =
2

-2

2
- + 4

, 0 < /2
, /2 <
, 3 / 2
, 3 / 2 < 2

41 0-2 =

2 k

41

()

7 FIR 120

4k
, k = 0, 1, 2, ..., 10
41
4k
- + 2 , k = 11, 12, 13, ..., 20
41
H( k ) =
4k

- 2 , k = 21, 22, 23, ..., 30


41
4k
- 41 + 4 , k = 31, 32, 33, ..., 40
|H| Matlab
k1=0:10; k2=11:20; k3=21:30; k4=31:40;
H=[4*k1/41, -4*k2/41+2, 4*k3/41-2, -4*k4/41+4];

H 7.3
7.13

7.13

7 FIR 121

FIR (FIR Filter Realization)


realization
FIR
h(n)
h(n) x(n) 7.14
delay 1

x(n)

z- 1

x(n-1)

z -1

h(1)

h(0)

x(n-2)

x(n-N+1)

z -1

h(N-1)

h(2)

y(n)
7.14 FIR

FIR
h(n)
FIR
7.15
N
x(n)

z -1
z -1

h(0)

y(n)

( N=7)
z -1
z -1
h(1)

z -1

N ( N=6)

x(n)

z -1

z -1
Z -1

z -1

z -1

h(2) h(3)

h(0)

z -1
h(1)

y(n)

7.15 FIR

h(2)

7 FIR 122

6
FIR 7.16
x(n)

block
(overlap )

FFT

IFFT

y(n)
block

FFT
h(n)
7.16 FIR

8 IIR 123

8
IIR

IIR,
IIR, FIR IIR
IIR

IIR h(n) FIR
H(z) IIR
H(z) h(n)


Butterworth, Chebychev, Elliptic, Bessel,




z
8.1
(Ha(s) s)
s = j (H(z)
z) z = ej
Ha(s) H(z)
Ha() H(ej) s z
(Bilinear Transform)

8 IIR 124
Bilinear
transform

Ha(s)

s = f(z)

H(z)
z=ej

s=j

Ha(j)

Bilinear
transform
= g()

H(ej)

8.1

s z
s = K

z -1
z+1

(8.1)

K

( [3])
2
1. s-plane zplane
s-plane
1 z-plane s-plane
1 z-plane 8.2


s (
) z 1 (
) s s s*
Real{s} =

(s + s*)
2

(8.2)

8 IIR 125

s 8.1
K z-1 z*-1
+
2 z +1 z*+1
K (z-1)(z *+1) + (z+1)(z*-1)
=

( z+1)(z*+1)
2
K 2 zz * - 2
=
2 ( z + 1 )( z * +1 )
K(zz* - 1)
=
(z+1)(z+1) *

Real{s} =

z z* |z|2
z
K (| z| 2 -1)
(8.3)
Real{s} =
| z +1| 2
Real{s} = 0 |z| = 1
s-plane z-plane
Real{s} < 0 |z| < 1
z-plane

s-plane

8.2 s-plane z-plane


2.
s = j z = ejw 8.1

8 IIR 126

e j - 1
j = K j
e +1
e j /2 (e j /2 - e- j /2 )
= K j /2 j /2 - j / 2
e (e + e
)
jsin( ) / 2
j = K
cos( ) / 2

= K tan( )
2

(8.4)

= = =0 =0
0 0
8.3

K=1
8.4
Ha(

H(ej)

8.3

8.4
0
0

8 IIR 127


( 0 2 /)
K


()
frequency warping
frequency warping




tan 8.4
- 2
2

()

(/)

8.4

Ha(s)
H(z)
z -1

s Ha(s) 8.1 s = K
z+1

8 IIR 128

H(z) = [H a (s)]s= K z1

(8.5)

z+1

IIR

(Butterworth)
monothonic

N
H a (s) =

1
N

(s p i )
i=1

(n)
1
2
3
4
5
6
7

1
(s p1 )(s p 2 )'(s p N )

(8.6)

(1, 2, , N)

4
4
,
6
5
7
,
8
8
6
8
, ,
10
10
7
9 11
, ,
12
12
12
8 10 12
,
, ,
14
14
14

8.1 ( ej )

8 IIR 129

pi pi S-plane

1 + ( s 2 ) = 0
N

(8.7)

N=2

1 + ( s2 ) = 0 s4 = -1
2

ej3/4

ej/4

e- j3/4

e- j/4

4 1

e j3 4 e j3
, N=2 8.1

H a (s) = H a (s)H a ( s) =

1
1 + ( s)2N

(8.8)


fs
= [0, ] s=j

H a ( j ) =
2

1
1 + 2 N

(8.9)

(c) 1
1
2
= c = 1 H a ( j) =
2
3dB
1)
2) n ej -1

8 IIR 130



1) K
= c = c
8.4

= K tan
2

(8.10)

= c = c K

c = K tan c
2

K = c cot c
2

(8.11)

c = 1

K = cot c
2

(8.12)

2)
()

8.9
H a ( j ) =
2

1
1 + 2 N

(8.9)

= K tan
2

8 IIR 131

H(e j ) =

1 + K tan
2

(8.13)

2N

( |H| )
N

3) Ha(s)
N=5 Ha(s)
H a (s) =

(s p )(s p ) (s p )(s p )
1

1
(s p 3 )

(8.14)

4) H(z) 8.5
H(z) = [H a (s)]s= K z1

(8.5)

z+1

z 1

z +1
H(s)
8.14 H(z)
s K

G1 (z + 1)2
G 2 (z + 1)2 G3 (z + 1)
H(z) =
(8.15)
*
*
(z z1 )(z z1 ) (z z2 )(z z2 ) z z3
G1 (z + 1)2
G 2 (z + 1)2
G 3 ( z + 1)
(8.16)
= 2
2
2
z z3
z 2 Re{z1 }z + z1 z 2 2 Re{z 2 }z + z 2
z i =

K + pi
K pi

Gi =

1
2
K pi

8 IIR 132

i = 1, 2
1
p3
z3 =

K + p3
K p3

G3 =

1
K p3

2 kHz
8.1
8 kHz
20 dB 3kHz
1) K

K = cot c
2
1
= cot
2 2

= cot
=1
4

c =

2 fc 2 (2000 )
=
=
fs
8000
2

2) N
3 kHz = 20 dB = - 20 dB
dB = 10log|H|2 |H|2 = 10

20

= 0.01
2 f 2 (3 k ) 3
=
=

=
fs
8k
4

f = 3 kHz

10

H 2 = 3 4 < 0.01 |H|2 8.13


1
< 0.01
2N

1 + K tan
2 =3 / 4

3
1 + tan
8
3
2 N log tan
8
2N
2.6 N = 3
2N

100

<

log (99)

<

5.21
N

<
>

8 IIR 133

3)
j

4
6

4
6

N = 3 8.1 p1= e , p1*= e , p2= -1


1
H a (s) =
4j
4
s e 6 s e j 6 (s + 1)

)(

4) 8.16
G1 (z + 1)2
G 2 ( z + 1)
H(z) = 2
2
z z2
z 2 Re{z1 }z + z1
4

K + p1 1 + e j 6
=
= j0.57735 ; Re{z1 } = 0 , |z1| = 0.5773
z1 =
4
K p1 1 e j 6
1
1
1
G1 =
=
2 =
2
4
3
K p1
1 ej 6
K + p 2 1 + ( 1)
z2 =
=
= 0
K p 2 1 ( 1)
1
1
1
G2 =
=
=
K p 2 1 ( 1) 2

| H |2 (dB)

H ()

8.5

8 IIR 134


1 (z + 1)2 1 (z + 1) 1 (z + 1)3
2
H(z) = 2 3
=
2
(
)
z + 0.57735
z
6 z( z 2 + 1 3 )
8.5

()


, ,

1
(
s) (LPF LPF)
2
( z)
3

3


s z 8.2

LPF LPF
s-plane 1
BPF BSF
BPF 4
2

8.2 s=j
z=ej

8 IIR 135

H(j)


(LPF HPF)

8.2 = K cot( )
2
= = 0 =0 =


K=1
8.7


LPF
HPF
BPF

BSF

s z

z-1
z+1
z+1
s=K
z-1
2
z + 2cz+1
s=K 2
z -1

)
2

= K cot( )
2
cos( ) - c
= -K
sin( )

c
)
2

K = tan( c )
2
K = cot[( 2 1 ) / 2 ]

z 2 -1
s=K 2
z + 2cz+1

=K

s=K

= K tan(

sin( )
cos( ) - c

K = cot(

cos[( 2 + 1 ) / 2 ]
cos[( 2 1 ) / 2 ]
K = tan[( 2 1 ) / 2 ]
c=

c=

cos[( 2 + 1 ) / 2 ]
cos[( 2 1 ) / 2 ]

8.2 4

)
(1 2

8 IIR 136

Ha()

H(ej)

8.6
LPF HPF

()

(/)

8.7
LPF HPF
8.2 2 kHz
8 kHz
20 dB 1.5 kHz
'
2 f c

K , K = tan c , ' c =
=
2
fs
2
1

K = tan . = tan = 1
2 2
4

8 IIR 137

20dB = -20 dB = 0.01


2 f
2 (1.5 k ) 3
=
=
' =
fs
8k
8
3

|H|2 ' =
< 0.01
8
( |H|2 HFP)

1
< 0.01
' 2 N

1 + k cot( )

2 ' = 38
1
< 0.01
3 2 N

1 + cot( )
16
3 2 N

100 < 1 + cot( )


16
3
log(99) < 2 Nlog cot( )
16
log( 99 )
N >
3 = 5.7
2 log(cot )
16

N = 6

n=6 H( s ) =
6 { e

7
j
12

7
-j
12

9
j
12

9
-j
12

11
j
12

11
-j
12

1
N

( s p i )
i=1

} ( 8.1)

LPF HPF
H( z ) = H( s ) s= k z+1 = H( s ) s= z+1
z1

z1

H(z)



0.0296z6 - 0.1775z5 + 0.4438z 4 - 0.5918z3 + 0.4438z2 - 0.1775z + 0.0296
H( z ) =
z6 + 0.7777z 4 + 0.1142z2 + 0.0018

8 IIR 138




(peaking filter) (notching filter)

p1 q1
H(z) = A

z - q1
, |p1|, |q1| 1
z - p1

(8.17)

|H(z)| |z-qi|
|z-pi|

|H(z)| = |A|

|z - q1 |
|z - p1 |

(8.18)

p1 , q1 p1=|p1|ejp q1=| q1|ejq


1. z-q1 8.8
z z-q1
z-q1 z q1 = q1
= = q z=ejq |z-q1|
(
)

| q1| ( 1)
| q1| = 1 |H| = 0 q

2. = = p z=ejp |z-p1|
|H| (
) |p1| ( 1)
| p1| = 1 |H| =
1

8 IIR 139

z-plane

q1

z-q1

z = ej

8.8 z-q1 z-plane



z-plane
z + 0.8

H(z) = A
z - 0.6
|z|=1
= 0.6 (=0),
= -0.8 = 0.8ej (=)
0
0

-
(z - 1)(z + 1)
H(z) = A
(z - re j /2 )(z - re - j /2 )
=/2 -/2,
=0
=/2

z-plane

8.3 1 kHz 1 0
1
kHz |H| = 500Hz, fs = 2 kHz
4

f=1kHz = |H| = 0 = 1e j = -1

8 IIR 140

f=0kHz = 0 |H| = 1 = ej0 =


f=500Hz = /2 |H|=1/4
H(z) H( z ) = A

z +1
A
Z

e j ' + 1
H( e ) = A j '
e
(1 + 1)
1-=2A -------- (a)
1; |H| '=0 = 1 = A
1g
j

1
A ( e + 1)
=
------- (b)

j
4
e 2
(a), (b) A=0.2052, =0.5896
0.2052 ( z + 1 )
H( z ) =

z 0.5896

2; | H|

'=
2








(z - rz e j 0 )(z - rz e-j 0 )
H(z) = K
(z - rp e j 0 )(z - rp e- j 0 )

(8.19)

Matlab 8.1
fs/2 DSP Toolbox rz, rp,
K 8.19
zp2tf DSP Toolbox

8 IIR 141
function [a,b] = singfreq(fn,rz,rp,k)
w=fn*pi;
z=[rz*exp(j*w); rz*exp(-j*w)];
p=[rp*exp(j*w); rp*exp(-j*w)];
[a,b]=zp2tf(z,p,k);

8.1 singfreq.m
8.9
0= 0.4
8.9 ) rz = 0.91, rp = 0.98, K = 1.07
8.9 ) rz = 1.0 , rp = 0.95, K = 0.95


(f0, 2f0, 3f0, 4f0, )

8.9

IIR (IIR Filter Realization)

8 IIR 142

IIR H(z)
H(z) H(z) (
= 2
)
a 0 z2 + a1 z + a 2
a 0 + a1 z 1 + a 2 z 2
H( z ) = 2
(8.20)
H( z ) =
z + b1 z + b 2
1 + b1 z 1 + b 2 z 2
direct form 1 8.10
H(z)=Y(z)/X(z)

Y(z) {1 + b1z-1 + b2z-2} = X(z) {a0 + a1z-1 + a2z-2}
Y(z) = X(z) {a0 + a1z-1 + a2z-2} - Y(z) {b1z-1 + b2z-2}
y(n) = a0x(n) + a1x(n-1) + a2x(n-2) - b1y(n-1) - b2y(n-2)

(8.21)

y(n) a0x(n) + a1x


(n-1) + a2x(n-2) b1y(n-1) - b2y(n-2)

a0

x(n)
z-1
z-1

a1
a2

y(n)
-b1
-b2

z-1
z-1

8.10 IIR (direct form 1)


IIR direct form 2 canonical form
8.11

8 IIR 143

w(n) x(n)

W( z )
1
=
(8.22)
1
X ( z ) 1 + b1 z + b 2 z 2
z w(n) = x(n) - b1w(n-1) - b2w(n-2) w(n)
w(n)

y(n) w(n)

Y(z)
= a 0 + a1 z 1 + a 2 z 2
W(z)

(8.23)

z y(n) = a0w(n) + a1w(n-1) + a2w(n-2)



Y ( z ) W( z ) Y ( z)
a 0 + a1 z 1 + a 2 z 2

=
=
X( z )
X( z ) W ( z )
1 + b1 z 1 + b 2 z 2

x(n)

1
1

1+ b 1 z + b 2 z

w(n)

w(n)

x(n)
-b1
-b2

z-1
z-1

a0 +a1z1 +a2z2
a0

y(n)

y(n)

a1
a2

8.11 IIR (direct form 2)


direct form 1 2

8 IIR 144

H(z) (cascade form)


(parallel form)
8.12 H(z) Hi
(z) Hi(z) =2 Hi(z)
=1 Hi(z) direct form 1 2
H(z) = c H1(z) H2(z) ... Hm(z)
x(n)

H1

(8.24)

H2

Hm

y(n)

8.12 IIR
8.13 H(z)
Hi(z) Hi(z) 2 Hi(z)
1
H(z) = c + H1(z) + H2(z) + ... + Hm(z)

(8.25)

x(n)

H1
H2

y(n)

Hm
8.13 IIR

8 IIR 145

8.5 8.1 IIR


direct form 2, , ( canonical form
)
8.1
1 (z + 1)3
H(z) =
6 z( z 2 + 1 3 )
1 (z3 + 3z2 + 3z+1)
=
6 ( z3 + z 3 )
z3 / 6 + 0.5z 2 + 0.5z+1 / 6
=
z3 + z / 3
1 / 6 + 0.5z-1 + 0.5z -2 +1 / 6z-3
=
1 + 1 / 3 z 2
IIR
{a0 a1 a2 a3} = {1/6 0.5 0.5 1/6} {b1 b2 b3} = {0 1/3 0}
1/6

x(n)

z-1

-1/3

z-1
z-1

y(n)

0.5

0.5

1/6

8.14 direct form 2


H(z)
2

8 IIR 146

1 (z + 1)3
H(z) =
6 z( z2 + 1 3 )
1 ( z + 1 ) (z2 + 2z+1)
=
6 z ( z2 + 1 3 )
-1
-2
1
1 (1+ 2z + z )
= (1 + z )
6
(1 + 1 3 z2 )
1/6

x(n)

z-1

-1/3

y(n)

z-1

z-1

8.15
H(z)
2
1 ( z + 1)3
H( z) =
6 z( z 2 + 1 3 )
1 (z3 + 3z2 + 3z+1)
=
6 z ( z2 + 1 3 )
(z3 + 3z2 + 3z+1)

2
1
z
+
( 3)
z+3
z3 + 3z2 + 3z + 1
z2 + 1/3
+1/3z
z3
3z2 +8/3z
+1
3z2
8/3z

8 IIR 147

8 / 3z
(z3 + 3z2 + 3z+1)

z
+
3
+
=
z2 + 1 / 3
( z2 + 1 3 )

1
8 / 3z
4 / 9z-2
-1
H(z) = (z + 3 + 2
) = 1 / 6 + 0.5z +
6z
z + 1/3
1 + 1 / 3z-2
1/6

-1

0.5

x(n)

y(n)

z-1

-1/3

z-1

4/9

8.16

FIR IIR
FIR IIR

FIR IIR
1.
IIR ()
2. FIR
3. FIR

(finite word length) 10
, ,

8 IIR 148

IIR FIR
1. (

) FIR
IIR FIR IIR

2.

9 149



Matlab
Matlab (floating-point
number) 64

(fixed-point
number)


10

(Fixed-Point Number System)


fixed-point

()
interger

8
8 000000002 111111112 256 28



N M

9 150

X X X . X X X X
2N-1 21 20 2-1 2-2 2-M
0 2-M 2N-2-M
8 N=8, M=0

X X X X X X X X.

27 26 25 24 23 22 21 20
0, 1, 2, , 255
N=0, M=8

.X X X X X X X X

2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8
0, 2-8, 2(2-8), 3(2-8), , 1-2-8
0.00390625, 0.0078125, 0.01171875, , 0.99609375
N=3, M=5

X X X.X X X X X

22 21 20 2-1 2-2 2-3 2-4 2-5
0, 2-5, 2(2-5), 3(2-5), , 23-2-5
0.03125, 0.0625, 0.09375, , 3.96875


N M ( N M 9 10
N M )





a 0 a < 2N afix
afix a
afix = round( a 2M )

(9.1)

9 151

round( )
0.5 0.5 1
a
afix fixM
2
M
a ( a 2 )

err =

a fix
-a
2M

(9.2)

9.1 0.66 8 2 M=8 M=7


M=8 a = 0.66
afix = round( 0.66 28 )
= round(168.96)
= 169
a = 169

8
a = 101010012 (

)
afix = 169 afix/28 = 0.66015625
a=0.66 8
0.66015625 afix = 169

a
err = fix8 - a = 0.00015625
2
M=7 a = 0.66
afix = round( 0.66 27 )
= 84

a
err = fix7 - a = -0.00375
2

9 152

M=7 0
2 M=8 0 1
M=7
M

(Least Significant Bit) 2-M
rounding

- /2 < err < /2
(9.3)
- 2M+1 < err < 2M+1
M=8 0 a < 1 err 2-9
M=7 0 a < 2 err 2-8




1) sign-magnitude 1 (
) (sign bit) 0
1 sign-magnitude N=0, M=7
1 8
sign


X.X X X X X X X
sign 2-1 2-2 2-3 2-4 2-5 2-6 2-7

010101002 = 8410 0.65625 ( 9.1)


110101002 = -8410 -0.65625
sign-magnitude

2s complement

9 153

2) 2's complement
-2N-1 2's
complement 8 N=2 M=6
N

X X.X X X X X X
-21 20 2-1 2-2 2-3 2-4 2-5 2-6

9.1
2s complement 8
N=1, 2, 8
2-M

()

( N=8)

( N=1)

( N=2)

1000 0000
1000 0001
1000 0010

1111 1111
0000 0000
0000 0001
0000 0010

0111 1111

128
129
130

255
0
1
2

127

-128
-127
-126

-1
0
1
2

127

-1 ()
-1+2-7 = -0.9921875
-1+2(2-7) = -0.984375

-2-7 = -0.0078125
0
2-7 = 0.0078125
2(2-7) = 0.015625

-7
1-2 = 0.9921875
()

-2
-2+2 = -1.984375
-2+2(2-6) = -1.96875

-2-6 = -0.015625
0
2-6 = 0.015625
2(2-6) = 0.03125

-6
2-2 = 1.984375
-6

9.1 2's complement ( 8 )


1
0
2's complement
1 (N=1) -1 1
-1 1

9 154

9.2 -0.595 2's complement 8 M=7


2's complement a -2N-1 a < 2N-1
afix afix a
9.1
afix = round( a 2M )

(9.1)

M=7 N=1 a -1 1 a=-0.595

afix = round( -0.595 27 )


= round(-76.16)
= -76
-76 -76 / 27 = -0.59375
a
a fix
- a = -0.59375 - (-0.595) = 0.00125
27
()

( 8 )
1 -2-B+1
B = afix = -76
afix = -128 + 52 = 100000002 + 001101002 = 101101002
2
2B -2-B+1 2-B+1 afix = 76 28 afix = -76 + 28 = 180 = 101101002
9.3 110010102 2's complement
M=0, M=6, M=7

9 155

M=0 ( XXXXXXXX. )
-128 127 ( -2N-1 2N-1-2-M)
110010102
afix = 100000002 + 010010102
-2N-1 N=8 -128
74
a = -128 + 74 = -54
M=6

X X.X X X X X X

-21 20 2-1 2-2 2-3 2-4 2-5 2-6
-2 2 ( -2N-1 2N-1-2-M)
afix = 100000002 + 010010102
a = (-2 ) + 20 + 2-3 + 2-5 = -0.84375
M=6 M=0 M=0
2M
a = -54 / 26 = -0.84375
M=7 ( X.XXXXXXX )
-1 1 ( -2N-1 2N-1-2-M)
afix = 100000002 + 010010102
a = (-1 ) + 2-1 + 2-4 + 2-6 = -0.421875
M=0
a = -54 / 27 = -0.421875
9.4 sign-magnitude 2's complement
) 011010012
2s complement
011010012
) 100101102

9 156

2s complement sign-magnitude
1 0 0 1 1
100101102 011010012
1 100101102+1 = 111010102 2s complement

2's complement
2's complement

2's complement 2
1)
2's complement 4 M=0
() -8 7
1 3 + (-5) = ?
0011
3
+
+
1011
-5
1110
-2


2

-2 + (-5) = ?
+
1110
-2
+
1011
-5
1 1001
-7


3

-4 + (-5) = ?
1100
+
1011
1 0111

-4 +
-5
7 !

9 157

-9



2)

4 + 5 - 3 = ? ( 2s complement 4 M=0
1) 4+5 9
-3 6
2s complement



0100
4
+
+
0101
5
-7 !
1001
+
+
-3
1101
6 !
1 0110


4+
4+

5
5
-7 +
-8+1 + -8 -8
1+ 5 = 6
-8+5
-3
6
6

}
}


2's complement

FI R

9 158

(Floating-Point Number System)


floating-point


(mantissa)
(exponent)

0.003257 ()
-3
3.257 10-3 3.257
0.3257 10-2
1



1 10 -1 -10
10
2
= () 2 ()

(9.4)


()

2s complement sign-magnitude
1 2 -1 -2


13
4
= X X . X X X X X X X X X X X 2 X X X X .

(9.5)


1 1

9 159

1 0

= 0 1 . X X X X X X X X X X X 2 X X X X .

(9.5)

= 1 0 . X X X X X X X X X X X 2 X X X X .

(9.6)

( )

9.5 9.6
12 13
16

9.5
9.5 9.6 2s complement

) -7.687
) 0.005628
) x x = -7.687 x
9.4 m = e =

x = m 2e

log2
log2( |x| ) = log2( |m 2e| )
log2( |x| ) = log2( |m| 2e )
log2( |x| ) = e + log2(|m|)
e = log2( |x| ) - log2(|m|)

(9.7)

|m| 1 2 log2(|m|) 0 1
e e ( 1)

9 160

log2(|x|) e log2(|x|)
( e log2(|x|) )
e = floor( log2( |x|) )

(9.8)

floor (
Matlab
)
e = floor( log2(7.687) ) = floor(2.94242)
= 2 = 00102

m=

x
2e

(9.9)

m = -7.687 / 22 = -1.92175
m 2s complement
( N = 2 M=11)
mfix = round(-1.92175 211) = -3936 = 10000101000002
2 () 0 9.6
12 1000101000002
) x = 0.005628 )
e = floor( log2(0.005628) ) = floor(-7.47316)
= -8 = 10012

m = 0.005628 / 2-8 = 1.440768
mfix = round(1.440768 211) = 2951 = 01011100001112

9 161

2 () 1 9.5
12 0011100001112
9.6
9.4 9.5
4
-8 7 12 13 M=11
N=2 2s complement
-2 -1, 0, 1 2
) 01.111111111112 2 - 2-11
) 01.000000000002 1
) 10.111111111112 -1 + 2-11
) 10.000000000002 -2
4
)

(2 - 2-11) 27 = 255.9375
)

1 2-7 = 0.0078125
)

-11
-7
(-1-2 ) 2 = -0.0078163
)

-2 27 = -256
16 TMS320C3x

16 9.1
32 24
8
5.810-39 3.410-3.8 9.1
32 TMS320C3x IEEE 754
TMS320C3x 2s complement


IEEE 745 sign-magnitude

9 162




127
4

1
sign

11

TMS320C3x Short Format


8

23

sign

TMS320C3x Single-Precision Format


1

23

sign

IEEE 754 Format

9.1 [14]





()




8
-R R 256
9.2
8 2
(e)
6
64 e = -2 Q0 32
32 e = -1 Q0

9 163

9.2 32 32 e
e








, ,


9 164

Q
8Q0

~~

.. 32 , e = 1
.

256

R/2
4Q0
-R

..
.
R/4
2Q0
Q0

32 , e = 0

.. 32 , e = -1
.
.. 32 , e = -2

0
..

~~

-R

9.2

10 165

10

9 2's complement

,
, ,
(random variable)

Matlab

(Signal Quantization)

()


(A/D)

(fixed-point)

B 1 , R
, Q
=

R
= 2B
Q

(10.1)

10 166

xg (n)

e(n)

x(n)

x(n)

10.1 ( )
-R/2 R/2
x(n)
xq(n) (rounding) x(n)
xq(n) - Q/2 xq(n) + Q/2 xq(n) xq(n)
x(n) Q/2
e(n)

e(n) = xq(n) - x(n)
- Q/2 < e(n) < Q/2

(10.2)
(10.3)

9.3

Q 10.1
xq(n)
xq(n)
xq(n) = x(n) + e(n) e(n)
(quantization noise)
e(n) (random)
e(n) ()
-Q/2 Q/2
e(n)

(uniform distribution)
-Q/2 Q/2 (probability density function)

10 167

1/Q, - Q/2 < e < Q/2


p(e) =
0 , e =

(10.4)

e 0
e Q2/12
Q/ 2
2
Pq = e2 p ( e ) de = Q12
Q/2

(10.5)


Pq Q2/12
Q2
Ps

SNR

PS
Pq
SNRA/D (dB) = Ps (dB) - Pe (dB)
SNR A/D =

(10.6)

Ps v2rms vrms
vrms
loading factor LF vrms vp (Peak
Voltage, )
LF =

v rms
vp

(10.7)

LF

v
1
vrms = p LF =
= 0.707 vrms = vp LF = 1
2
2

10 168

LF
0.15 - 0.2 ()
LF
Ps = v2rms = (LF)2vp2

(10.8)

-vp +vp

R 10.1 2vp R 10.1 1

Q=

2vp
2B

(10.9)

SNR
(LF) 2 v 2p
Ps
SNRA/D = =
2
Pq 2 v p
B 12
2
= 3 (LF)2 (22B) dB 10log( )
SNRA/D = 10 log { 3 (LF)2 (22B) } dB
= (2B)10log(2) + 10log(3) + 20log(LF) dB
= 6.02B + 4.77 + 20log(LF) dB

(10.10)

SNRA/D 10.10
1) SNRA/D (B) SNR 6 dB 1
2) SNRA/D LF 10.2 SNRA/D LF

3) SNRA/D
SNRA/D A/D
A/D
A/D

10 169


A/D
4) 1
SNR
SNR

SNRA/D SNR
SNR
SNR ( SNR SNR )

B=14
B=12

SNRA/D
(dB)

B=10
B=8

LF
10.2 SNRA/D (B) loading factor (LF)
10.1 13 ( )
2s complement
-5 5
1)
2) 2V
3) vrms = 1.5 V SNRA/D
R
2B
R = = 5 - (-5) = 10 V
B = 1 = 13 2B = = 213 = 8192
R B Q = 10 / 8192 = 1.2207 mV

1)

Q=

10 170

2s complement
9 (R 2N N )


5V A/D 8V
SNRA/D



2) = 2V
2V round(2V / Q) = round(1638.4) = 1638
1638 A/D
1638 *Q 1.999512 V
1.999512 V - 2 V = -0.488 mV
3) vrms = 1.5 V
1.52
Ps
v 2rms

SNRA/D =
= 2
=
= 1.8119 107
2
Pq
Q 12 (1.2207 mV) 12
SNRA/D = 10log(1.8119 107) = 72.6 dB

10.2 LF 0.18 SNRA/D = 80 dB

A/D
SNRA/D 10.10 B
SNRA/D = 6.02B + 4.77 + 20log(LF)
80 = 6.02B + 4.77 + 20log(0.18)
B = 14.97
A/D 15

16

SNR 80 dB

10 171

(Coefficient Rounding)


( 2s complement)

,
,

1)
2) IIR FIR
BPF BSF

3)

8

a 16 (2s
complement)
-1 1 N=1 M=15 ( N
M ) 1 1 N 1

!a
M
M
!a = round(a 2 ) / 2

(10.11)

10 172


!a


afix = round(a 2M)
c = 0.4
10.3
a 0 + a1 z 1 + a 2 z 2
H( z ) =
1 + b1 z 1 + b 2 z 2
2s complement 6
()
10.1

-1 1 N=1
M=5
Matlab 10.1

butter DSP Toolbox Matlab
a b a = [a0 a1 a2] b = [b0
b1 b2]

afix bfix fixpnt.m M N

( 2-(N-1) 2N-1 )

afix bfix 2M

10.3
b0 1 IIR b0
direct form 1 2 b0
10.1 bfix(1) = 2^M b0
1

10 173

= a
( butter Matlab)

a0
a1
a2
b0
b1
b2

0.20657208382615
0.41314416765230
0.20657208382615
1
-0.36952737735124
0.19581571265583

!a = afix / 2M

afix = round(a 2M)


7
13
7

-12
6

0.21875
0.40625
0.21875
1
-0.375
0.1875

10.1 10.3
M=5; N=1;
[a,b]=butter(2,0.4);
LPF
%
afix=fixpnt(a,M,N);
bfix=fixpnt(b,M,N); bfix(1)=2^M;
freqres(a,b,2)
hold on
freqres(afix/2^M, bfix/2^M, 2)
hold off

=2 =0.4

10.1 ex10_7.m 10.1


function y=fixpnt(x,M,N);
max_y = 2^(M+N-1);

y = round(x*2^M);


if max(abs(x)) > max_y
%
error('Overflow Error when converting to fixed-point!');
end
y = 2M+N-1
y = 2M+N-1 - 1

% x=2

y = y - (y==max_y);

N-1

10.2 fixpnt.m = M+N

( )

10.3 10.3

10 174

10.1

[a, b]
-1 1
N
N ( M)
IIR direct form 2
N ( M)
Matlab


(Overflow)


2s complement
2s complement 8 M=0 (
-128 127 ) 100 + 87 187
2s complement
01100100
+
01010111
10111011

100
+
87
- 69

-69 28 187 - 256 = -69



10.4 +
( 187 -69)

10 175

128

-128

10.4 ( 8 , M=0)


1)

(left shift) 1 2
2) (
)

SNR



FIR IIR
FIR IIR Direct Form 1




10.5
2s complement
()
y(n)

y(n)

10 176

a0

x(n)
z-1
z-1

x(n)

a1

-b1

a2

-b2

z- 1
h(0)

y(n)

z-1

z -1

z -1
h(1)

z-1

h(2)

h(N-1)
y(n)

10.5 FIR IIR direct form 1


s (s > 1) s
(scaling factor) 1/s

1
1/s

FIR
1/s
hnew(n) =

h( n )
s

(10.12)

IIR direct form 1 1/s



ai,new =

ai
s

(10.13)

10.6 s
s , ,
s 3

10 177

a0/s

x(n)
z-1
z-1

x(n)

z- 1
h(0)/s

y(n)

a1/s

-b1

a2/s

-b2

z-1
z-1

z -1

z -1
h(1)/s

h(N-1)/s

h(2)/s

y(n)

10.6 FIR IIR direct form 1


1) L1 (s)

1
1 s
y(n) x(n) y
(n)

y(n) = x(n) h(n) = h( m)x( n m)


m=0

x(n) 1 y(n) x(n-m) 1


h(m) m

ymax = h( n )
n= 0

ymax 1 y(n) ymax





s = L 1 = h( n )
n= 0

(10.14)

10 178

% filter DSP Toolbox

function s=sum_h(a,b);
if length(b)==1,

% FIR

s = sum(abs(a))/abs(b);
else

h(n) a

[out,zi] = filter(a,b,1);
% IIR
outold=100 ;
[1 0 0 0 .]
%
s=0;

in=0;
while (abs(out) > 1e-10) | (abs(outold-out) > 1e-6)
s = s + abs(out);
[out,zi] = filter(a,b,in,zi);
outold = out;
end
end

10.3 sum_h.m L1
FIR IIR IIR h(n)
h(n) 10.3
Matlab L1
a b ( freqres.m 5)
s



(ymax)


2) L2
(
v2rms )
s = L2 =

[h ( n )]2

n =0

(10.15)

L2
L2 Matlab 10.4
L1
L2


10 179
function s=sum_h2(a,b);
if length(b)==1,
s = sum(a.^2)/b^2;
else
[out,zi] = filter(a,b,1);
outold=100;
s=0; in=0;
while (abs(out) > 1e-10) | (abs(outold-out) > 1e-6)
s = s + out^2;
[out,zi] = filter(a,b,in,zi);
outold = out;
end
end
s = sqrt(s);

10.4 sum_h2.m L2
3) L

(

)

s = L = max H( e j )

(10.16)

L2 < L < L1[2] s


s SNR
s

10.4 IIR
0.1299z2 + 0.2597z + 0.1299
H( z) =
z2 - 1.4836z + 0.8309
direct form 1
L1, L2, L
L1 10.3 Matlab
a = [ 0.1299 0.2597 0.1299];
b = [1 -1.4836 0.8309];
sum_h(a,b)
L1 = 6.159

10 180

L2 10.4 sum_h2(a,b) L2 = 1.4485


L
10.7 0.1 L = 4.80

10.7 10.4
IIR Direct Form 2
direct form 2 direct form 1
y(n) w(n) 10.8
w(n)
(internal overflow)
direct form 1

F(z) 10.8
w(n) x(n) F(z)
x(n) w(n)
s1 s1
F(z) f(n) F(z)

s1 = L1 = f ( n )

s1 = L2 =

s1 = L = max F( e j )

n =0

[f ( n )]2

n =0

(10.17)
(10.18)
(10.19)

s1 10.9
F(z)

10 181

x(n)

F( z) =

1
1

1 + b1 z + b 2 z

w(n)

w(n)

x(n)
-b1
-b2

z-1
z-1

a 0 +a1z1 +a2z2
a0

y(n)

y(n)

a1
a2

10.8 IIR direct form 2


x(n)

1/s1

w(n)
-b1
-b2

z-1
z-1

a0 s1/s2

y(n)

a1 s1/s2
a2 s1/s2

10.9 IIR direct form 2




y(n) y(n) H
(z) s2
10.17 - 10.19 s1 s2, f(n) h(n), F(z) H(z)

s2
w(n)

1/s2
1/s1
1/s2 s1/s2
s2 s1 s1/s2
1/s2 1/s1 s1 s2
s1
s1/s2 1 ai
10.9

10 182

s1/s2 1 ai y
(n) y(n)
s1/s2 ai y(n) (
1/s2) SNR
10.5 IIR ( 10.4)
0.1299z2 + 0.2597z + 0.1299
H( z) =
z2 - 1.4836z + 0.8309
direct form 2
L1
s1 10.3
Matlab
a = [ 0.1299 0.2597 0.1299];
b = [1 -1.4836 0.8309];
sum_h(1, b)
s1 = 12.741 1/s1 = 0.0785
s2 H(z) sum_h(a, b) s2 = 6.159
s1/s2 = 2.07 ai
10.9

10.10
x(n)

0.0785

w(n)
1.4836
-0.8309

z-1
z-1

0.2689

y(n)

0.5376
0.2689

10.10 10.5
IIR
direct form 2
10.10 3 w1(n), w2(n), y(n)

direct form 2

10 183

w1(n)

x(n)
-b1/1
-b2/1

z-1
z-1

a0 /1

w2(n)

a1/1

-b1/2

a2/1

-b2/2

z-1
z-1

a0/2

y(n)

a1/2
a2/2

s1
s2
s3

x(n)

1/s1

10.10
a0/1 s1/s2
a0/2 s2/s3
-b1/1
-b2/1

z-1
z-1

a1/1 s1/s2
a2/1 s1/s2

-b1/2
-b2/2

z-1
z-1

y(n)

a1/2 s2/s3
a2/2 s2/s3

10.11
H1(z) F1(z)
H2(z) F2(z)
3 s1, s2, s3
s1 F1(z)
s2 H1(z) F2(z)
s3 H1(z) H2(z)
H1(z)
1/s1, s1/s2, s2/s3
w1(n), w2(n), y(n)
10.11
10.6 singfreq.m 8
0.2 0.4 Matlab
[a1,b1] = singfreq(0.2,1,0.95,0.95);
[a2,b2] = singfreq(0.4,1,0.95,0.95);

10 184

a = conv(a1,a2);
( conv !)
b = conv(b1,b2);
4 a b
a = [ 0.9025 -2.0181 2.7075 -2.0181 0.9025 ]
b = [ 1.0000 -2.1243 2.7075 -1.9171 0.8145 ]
a1 b1 H1(z)
a1 = [ 0.9500 -1.5371 0.9500 ]
b1 = [ 1.0000 -1.5371 0.9025 ]
a2 b2 H2(z)
a2 = [ 0.9500 -0.5871 0.9500 ]
b2 = [ 1.0000 -0.5871 0.9025 ]
direct form 2 (
L1 )
10.11
s1 s1 = sum_h(1,b1) s1 = 4.855
s2 s2 = sum_h(a1,b) s2 = 5.441
s3 s3 = sum_h(a,b) s3 = 2.497

1/s1 = 0.206, s1/s2 = 0.839, s2/s3 = 1.192
10.11
10.12
x(n)

0.206

0.8476
1.5371
-0.9025

z-1
z-1

2.0704

-1.3715

0.5871

0.8476

-0.9025

z-1
z-1

y(n)

-1.2796

2.0704

10.12 10.6
10.7 10.6 16
x(n) A/D 14 D/A 14
10.6 SNR

10 185

A/D

TMS320C5x (TMS320C5x Evaluation Board
TI) DSP TMS320C50 fixed-point 16 A/D
D/A TLC32046 14

14
16
4 A/D
D/A


10.12
1) 1/4 0.25
0.206
0.206 / 0.25 =
0.824 ( 1 )

0.206
2) y(n) a0/2, a1/2, a2/2
y(n) 4 4
0.5176, -0.3199, 0.1576

(Product Rounding)


5 M=0
0 32
0 1024 10 (M=0)
XXXXX.

X X X X X.
X X X X X X X X X X.

5
(

)

10

10 186

5 M=5 N=0
10 10 0 32
0 32 0 1 32
10 M=5 N=5
X X X X X.

.X X X X X
X X X X X.X X X X X

(truncate) 5
(round) 5 5
5
M=5

5


1 M=3 N=2 10
M=3 3
2

X X X X X.

X X.X X X
X X X X X X X.X X X
0


M M

2s complement
( sign-magnitude)

2s complement B
2B - 1

10 187

10.13 a
M

10.1
2s complement
2s complement N=1 -1 a < 1
N>1 N>1
-1 1 -2 2 N=2
-4 4 N=3

2

(My,Ny)

(M,N)

ay
(My,Ny)
y

10.13
10.8 2s complement 8 M=7 114 -87
8

114
-87
-9918

01110010

10101001
101100101000010

2s complement


[4]
15 M=14 7 101100112
8 M=7 -77
, ,
2M

10 188

114 114 7 = 0.890625


2

-87 -87 7 = -0.6796875
2
-9918 - 9918 14 = - 0.605346679688
2
15
-77 - 77 7 = - 0.6015625
2

- 0.6015625 - (-0.605346679688) = 0.003784179688

Matlab 10.5 x
M N
M

10.8 10.5
rndfix( 114*(-87), 7, 1)
-77

function y = rndfix(x,M,N);
max_y = 2^(M+N-1);

y = round(x/2^M);

% M

floor round

%

if max(abs(y)) > max_y


error('Overflow Error after rounding!');
end
y = y - (y==max_y);

y = 2M+N-1
y = 2M+N-1 - 1

10.5 rndfix.m M ()




() 1
Q 10.1

10 189

Q=

R
2B

(10.1)

y(n) ye(n)

(multiplication noise) ee(n)

(10.20)
e(n) = ye(n) - y(n)
(rounding)
- Q/2 < eround(n) < Q/2

(10.21)


( 10.5)

2
Pe,round = Q12

(10.22)

(truncation) (
)

- Q < etrunc(n) < 0

(10.23)


2
Pe,trunc = Q3

(10.24)



10.14

x(n)

y(n)
a

y(n)

x(n)
a

yr(n)
e(n)

Pe

10 190

10.14

FIR
FIR N-1 N
N
10.15
etotal(n) = e0(n) + e1(n) + + eN-1(n)
x(n)

z- 1

e0(n)

z -1

z -1
h(1)

h(0)

(10.25)

h(N-1)

h(2)

e1(n)

eN-1(n)

e2(n)

y(n)
x(n)

z- 1
h(0)

z -1

z -1
h(1)

h(2)

h(N-1)
y(n)
etotal(n)

10.15 FIR



Pe,total = Pe1 + Pe2 + + Pe,N-1

(10.26)

(10.27)
Pe,total = NPe
Pe,total
Pe,total

10 191

DSP
accumulator






( )
Pe,total = Pe

(10.28)


( N > 1)

(
)

IIR direct form 1


direct form 1 FIR
10.16 5
etotal(n)
etotal(n) direct form 1
FIR

FIR

IIR FIR


y(n) ye(n)

ye(n) = y(n) + eout(n)
ye(n)

(10.29)

10 192

ye(n) = a0x(n) + a1x(n-1) + a2x(n-2) - b1 ye(n-1) - b2 ye(n-2) + etotal(n)

(10.30)

z
Ye(z){ 1 + b1 z-1 - b2 z-2} = X(z){a0 + a1 z-1 + a2 z-2}+ Etotal(z)
a 0 + a1 z-1 + a 2 z-2
E total ( z )
Ye(z) =
X( z ) +
-1
-2
1 + b1 z + b 2 z
1 + b1 z -1 + b 2 z-2

(10.31)

etotal(n)
x(n)

a 0 +a1z1 +a2z2

F( z) =

z-1
z-1

1 + b1 z + b 2 z 2

y(n)

etotal(n)

a0

x(n)

1
1

yr(n)

a1

-b1

a2

-b2

z-1
z-1

10.16 IIR direct form 1

Eout(z) =

E total ( z )
= F(z)Etotal(z)
1+ b1 z-1 + b 2 z-2

(10.32)

F(z)

10.16 eout(n)
(white noise)



etotal(n)

Pe,out = Pe,total f 2 ( n )
n= 0

(10.33)

10 193

f(n) F(z)

Pe,total = 5Pe

Pe,out = 5Pe f 2 ( n )
n= 0

(10.34)

Pe,out = 5Pe f 2 ( n )
n= 0

(10.35)

f 2 ( n ) 10.4 (sum_h2.m)
n= 0

L2

IIR direct form 2


direct form 2
et1(n)
et2(n) 10.17
et1(n) H(z) et2(n)

Pe,out = Pt1 h 2 ( n ) + Pt2


n =0

(10.36)

Pe,out = 2Pe h 2 ( n ) + 3Pe


n =0

(10.37)

Pe,out = Pe h 2 ( n ) + Pe
n =0

(10.38)

10 194

et1(n)

w(n)

x(n)
-b1
-b2

z-1
z-1

a0

et2(n)

y(n)

a1
a2

10.17 IIR direct form 2


10.9 IIR 10.4 10.5
0.1299z2 + 0.2597z + 0.1299
H( z) =
z2 - 1.4836z + 0.8309
direct form
1 direct form 2 L1,
(rounding)


10.4 10.5

2
Pe = Pe,round = Q12
direct form 1 10.35

2
Pe,out = Pe f 2 ( n ) = Q12 f 2 ( n )
n= 0
n= 0

f 2 ( n ) sum_h2 Matlab
n= 0

b = [1 -1.4836 0.8309];
sum_h(1,b)^2

162.32
2
Q
Pe,out = 12 (162.32) = 13.53Q2

10 195

direct form 2 10.37

2
2
Pe,out = Pe h 2 ( n ) + Pe = Q12 h 2 ( n ) + Q12
n =0
n =0

h 2 ( n ) sum_h2 Matlab
n =0

a = [0.2689 0.5376 0.2689];


b = [1 -1.4836 0.8309];
sum_h(a,b)^2
162.53
2
2
Pe,out = Q12 (162.53) + Q12 = 13.63Q2


4 2 direct
form 2 10.18
3
) 2 H(z)
) 5 H2(z)
) 3

n =0

n =0

Pe,out = 2Pe h 2 ( n ) + 5 Pe h 22 ( n ) + 3 Pe

(10.39)

n =0

n =0

Pe,out = Pe h 2 ( n ) + Pe h 22 ( n ) + Pe

(10.40)

10 196

et2(n)

w1(n)

x(n)
-b1/1
-b2/1

z-1
z-1

et2(n)

a0 /1

w2(n)
-b1/2

a1/1

-b2/2

a2/1

z-1
z-1

a0/2

et3(n)
y(n)

a1/2
a2/2

H1(z)

H1(z)
H(z)

10.18

Matlab
Matlab

Matlab Matlab
Matlab 64


Fixed-Point Toolbox
Matlab
Simulink (Simulink Matlab
)
Matlab
Matlab (
MEX)
Matlab



, ,

10 197

(test vector)

Matlab
fixpnt.m (
10.2) rndfix.m
( 10.5)
2s complement M N

Matlab
1) M N
fixpnt.m
2) 2-B+1 2B-1 (B
B=M+N)
fixpnt.m
3) rndfix.m
4)

chkovr.m ( 10.6)
function chkovr(x,B);
if max(abs(x)) > 2^(B-1)
error('Overflow Error after Adding!');
end

10.6 chkovr.m

IIR direct form 1


direct form 2
IIR direct form 1
10.7 IIR direct form 1
) a b

10 198

) M N a b
) x
y


Matlab

function y = iir1(a,b,x,M,N)
B = M+N;
a = fixpnt(a,M,N);
b = fixpnt(b,M,N);
Nx=length(x); Na=length(a); Nb=length(b);
xold=zeros(1,Na); yold=zeros(1,Nb);
y=zeros(1,Nx);
for i=1:Nx
xold(1)=x(i);
for j=1:Na
y(i) = y(i) + rndfix(a(j)*xold(j),M,N);
end
for j=2:Nb
y(i) = y(i) - rndfix(b(j)*yold(j),M,N);
end
chkovr(y(i), B);
yold(1)=y(i);
xold(2:Na) = xold(1:Na-1);
yold(2:Nb) = yold(1:Nb-1);
end

10.7 iir1.m IIR direct form 1


function y = iir1a(a,b,x,M,N)
a = fixpnt(a,M,N);
b = fixpnt(b,M,N);
Nx=length(x); Na=length(a); Nb=length(b);
xold=zeros(1,Na); yold=zeros(1,Nb);
y=zeros(1,Nx);
for i=1:Nx
xold(1)=x(i);
for j=1:Na
y(i) = y(i) + a(j)*xold(j);
end
for j=2:Nb
y(i) = y(i) - b(j)*yold(j);
end
y(i) = rndfix(y(i),M,N);
yold(1)=y(i);
xold(2:Na) = xold(1:Na-1);
yold(2:Nb) = yold(1:Nb-1);
end

10.8 iir1a.m 10.7

10.8



rndfix

10 199

10.10 8 LPF
0.6
DSP Toolbox butter
[a,b]=butter(4,0.6)
LPF =4 =0.4

a = [ 0.1672 0.6687 1.0031 0.6687 0.1672 ]


b = [ 1.0000 0.7821 0.6800 0.1827 0.0301 ]

10.7 (iir1.m) filter DSP


Toolbox 10.19 )

8 iir1.m iir1a.m
1 a(3)=1.0031 a
(3)=1 M=7 N=1

( iir1.m)
M=7; N=1;
x = [128 zeros(1,79)];
128 1
y = iir1(a,b,x,M,N);

y = y/128;
figure(1); plot(y)
figure(2); dtft(y)
10.19 ) )


10.19 ) ) 10.19 )

h(n)
|H|

10 200

10.19 10.10
) ) 8
) 8 16
10.19 )
() ,0, -1, 1, 0, 1, 1, 0, -1, 1, 0, limit cycle oscillation
[4]


10.10

10 201



IIR direct form 2
10.9 10.10 (iir2 iir2a) IIR direct
form 2 direct form 1
iir2 iir2a M
(ai) (bi)
M, N, M2, N2 M N M2
N2 M2 N2
M N M



M N
M
M
function y = iir2(a,b,x,M,N,M2,N2)
if nargin==5
M2=M; N2=N;
end
B = M+N;
a = fixpnt(a,M,N);
b = fixpnt(b,M2,N2);
Nx=length(x); Na=length(a); Nb=length(b);
Nab=max(length(a),length(b));
wold=zeros(1,Nab);
y=zeros(1,Nx);
for i=1:Nx
wold(1) = x(i);
for j=2:Nb
wold(1) = wold(1) - rndfix(b(j)*wold(j),M2,N2);
end
chkovr( wold(1),B );
for j=1:Na
y(i) = y(i) + rndfix(a(j)*wold(j),M,N);
end
chkovr( y(i),B );
wold(2:Nab) = wold(1:Nab-1);
end

10.9 iir2.m IIR direct form 2


function y = iir2a(a,b,x,M,N,M2,N2)
if nargin==5
M2=M; N2=N;
end

10 202
B = M+N;
a = fixpnt(a,M,N);
b = fixpnt(b,M2,N2);
Nx=length(x); Na=length(a); Nb=length(b);
Nab=max(length(a),length(b));
wold=zeros(1,Nab);
y=zeros(1,Nx);
for i=1:Nx
wold(1) = 0;
for j=2:Nb
wold(1) = wold(1) - b(j)*wold(j);
end
wold(1) = x(i) + rndfix(wold(1),M2,N2);
chkovr( wold(1),B );
for j=1:Na
y(i) = y(i) + a(j)*wold(j);
end
y(i) = rndfix(y(i),M,N);
wold(2:Nab) = wold(1:Nab-1);
end

10.10 iir2a.m 10.7


iir1 iir2
1 2
N=2 N=1
iir1a
M
iir2a 2
(a)
(b) M
M

(
) DSP CPU
IIR direct form 2
iir2a 10.11
iir2a.m Matlab

10 203

x y x y
2s complement 16
()
) Order
) a[ ] b[ ]
) wold[ ]
32
ACC 2s complement 32 16
15
(right shift)
()

Matlab
floor
Matlab
round rndfix.m
floor
10.12 iir2a ( )

10

Matlab LPF
0.6 M=15, N=1
iira2.m Matlab
x

int iir2a(int x)
{
long int ACC = 0;
int i,y;
for (i=1; i<=Order; i++)
ACC -= b[i] * wold[i];
wold[0] = x + (ACC >> 15);
ACC = 0;
for (i=0; i<=Order; i++)
ACC += a[i] * wold[i];
y = ACC >> 15;
for (i=Order; i>0; i--)
wold[i] = wold[i-1];
return(y);
}

10.11 iir2a.c IIR direct form 2

10 204

10.13 iir2a
TMS320 DSK

A/D
DSP

#include "stdio.h"
#define Order 4
const long int a[Order+1] = { 5478, 21913, 32767, 21913, 5478 };
const long int b[Order+1] = { 32767, 25628, 22282, 5986, 987 };
long int wold[Order+1] = { 0, 0, 0, 0, 0 };
void main()
{
int i;
int x[10] = { 5500,150,-2800,-20000,-25000,
-10000,2000,18000,21000,10000 };
for (i=0; i<10; i++)
printf(" %d\n", iir2a(x[i]) );

% x

getch();
}

10.12 iir2a.c
#define Order 4
extern void aicinit();
int *DRR = (int *) 0x20;
int *DXR = (int *) 0x21;
const int a[Order+1] = { 5478, 21913, 32767, 21913, 5478 };
const int b[Order+1] = { 32767, 25628, 22282, 5986, 987 };
int wold[Order+1] = { 0, 0, 0, 0, 0 };
main()
{
aicinit();

A/D D/A
%

for(;;);

A/D
%

}
void c_int5(void)
{
int x;

A/D
%

x = *DRR >> 2;

A/D
%

*DXR = iir2a(x) << 2;

D/A
%

10.13 iir2a.c TMS320C50

11 205

11

(fs)





11.1

aliasing
aliasing
aliasing

fs1

fs1

D/A

fs2

A/D

fs2

11.1

11 206


aliasing



) (quantization noise)

) aliasing D/A A/D


)

(Decimator)

1/D D D
1 D-1
D=3 y(n) x(n) 1 2
11.2 y(n) () x(n) 3
y(n) x(n) 3
3 1/3
/3 11.3
/3
aliasing
2 /3


/3
11.2 11.3

D
aliasing
( 11.4)

11 207

1. LPF
/D 11.4 (Decimation
Filter) FIR
2. (down-sampler) D
1 D-1

x(n)

n
y(n)

n
11.2 3
|X(ej)|

'

'

|Y(ej)|

11.3 3 ( aliasing)

x(n)

LPF

y(n)

= /D

11.4
11.1 D
Matlab DSP Toolbox
decimate

11 208

( LPF)
downsam.m
function y = downsam(x,D);
n=1:D:length(x);
y=x(n);

11.1 downsam..m D

(Interpolator)
I
I I=3 y(n)
x(n) 3 y(n)
3
I=3
aliasing
y(n) x(n) 2
x(n)



2
w(n) 11.5 w(n)

w(n)
z w(n)

W( z) = n= 0w(n)z- n
w(n) w(0) = x(0) w(n) w(3), w(6), w
(9), w(3) = x(1), w(6) = x(2), w(n) = x
(n/3)
W( z ) =
=

w(n)z- n

n = 0,3,6,9,...

x(n / 3)z - n

n = 0,3,6,9,...

11 209

n 3n n=0,1,2,3,

W( z) = x(n)z -3n
n=0
3

= X(z )
z=ej x(n) w(n)
W(ej) = X(ej3)

(11.1)

x(n)

n
w(n)

n
y(n)

n
11.5 3
|X(ej)|
0

5
3

'

5
3

'

5
3

'

|W(ej)|
0

2
3

4
3

|Y(ej)|
0

11.6 3

11 210

w(n) x(n) 3
11.6 0 x(n) 0 /3 w(n)
/3

x(n)

( 11.7)

1.) I (up-sampler) I
I-1
2.) LPF /3 x(n)
(Interpolation
Filter)
y(n) x(n)
y(n) w(n)
x(n) 11.5 11.6
11.2
I
Matlab DSP Toolbox
interp

x(n)

w(n)

LPF

y(n)

= /I

11.7

function y = upsam(x,I);
Ny = length(x)*I;
y=zeros(1,Ny);
n=1:I:Ny;
y(n)=x;

11.2 upsam.m I ()

11 211




CD 44.1 kHz DAT
(Digital Audio Tape) 48 kHz
48/44.1 = 1.088..
48/44.1

48
441.

10

480
441

160
147

160 147
48/44.1
11.8


I=160 D=147 /160

x(n)

Interpolation
LPF

' C =
I

x(n)

Decimation
LPF
' C =

LPF

y(n)

' C =

I
D

11.8 =I/D

y(n)

11 212



I I
I=160 fs = 44.1 kHz
7056 kHz
160




FIR (N) (fs)
= Nfs MAC /

(11.2)


D
D
(11.3)
D = D1 D2 D3 DM
M
D1 D2 M
i Ni
fs,i

1, = fs1
x(n)

LPF1
c= /D1

2, = fs2 = fs1/D1
3, = fs3 = fs2/D2

D1

LPF1
c= /D1

D1

LPF1
c= /D1

11.9

D1

y(n)

11 213
M

= N i fs,i MAC /
i=1

(11.4)

Nifsi i
11.9


Di
D1 > D2 > D3 > > DM 11.1



11.1 x(n) 96 kHz 1 kHz

0.01 0.001 (p 0.01 s 0.001)
0 450Hz
, , MAC

96 2
1 96 fs1 = 96 kHz fs2 = 1 kHz (M=96)
( 11.4) LPF /96
500 Hz 1 kHz
0 500 Hz

0 450 Hz 450
500 Hz decimation
450 550 Hz
450 500 Hz aliasing ( 500 550 Hz
aliasing 450 500 Hz)
450 500 Hz
aliasing

f = 500 - 450 = 50 Hz
f = 50/fs1 = 50/96k

11 214

s 0.001 p

A = -20logp = 60 dB

A - 7.95
N=
+ 1 = 6960.3 N = 6961
14.36f
6961
MAC Nfs1 = (6961)(96k) 668 106 MAC/
2 1 fs1 = 96 kHz fs2 = 3
kHz (M1=32) fs2 = 3 kHz fs3 = 1 kHz (M2=3)
1 fs1 = 96 kHz fs2 = 3 kHz (M1=32)
/32 1500 Hz
0 450 Hz
450 1500 Hz
500 1500 Hz
( )
500 1500 Hz aliasing
500 2500 Hz ( 1500 2500 Hz
aliasing 500 1500 Hz )

(f)1 = 2500 - 500 = 2000 Hz


(f)1 = 2000/fs1 = 2k/96k = 1/48
A 60 dB

A - 7.95
N1 =
+ 1 = 175.0 N1 = 175
14.36( f )1
2 fs2 = 3 kHz fs3 = 1 kHz (M2=3)
/3 500 Hz
1 450 500 Hz

11 215

(f)2 = 500 - 450 = 50 Hz


(f)2 = 50/fs2 = 50/3k

A 60 dB
A - 7.95
+ 1 = 218.5 N2 = 219
N2 =
14.36( f )2
N1 + N2 = 394
MAC
= N1fs1 + N2fs2 = (175)(96k) + (219)(3k) 17.46 106 MAC/



( [2])

3 , 4 , 2


96 kHz 3kHz 96 kHz
3 kHz 96 kHz 96 kHz
3 kHz 32

FIR
11.10 )
FIR 11.10 )

96 kHz 3 kHz
32 FIR 1 31
()

11 216

h(0)

x(n)

z-1

h(1)

z-1

h(2)

y(n)

h(0)

x(n)

z-1

h(1)

z-1

h(2)

z-1

z-1

h(N-1)

h(N-1)

y(n)

D
D

11.10
FIR
11.11 ) (
)
FIR (transposed structure)

11.11 )



11.11 )
I
x(n)

11.11 )

h(0)

I
z-1

h(1)

z-1

h(2)

z-1

h(N-1)

y(n)

11 217

x(n)

h(0)

h(1)

h(2)

y(n)

z-1
z-1

x(n)

h(0)

h(1)

h(2)

I
z-1
I
z-1
I
:

:
-1
h(N-1) z

) FIR

y(n)

h(N-1)

z-1

11.11


2

(Oversampling A/D) [1],[11]

10

100%
aliasing aliasing


aliasing
(oversampling)

11 218

Anti-aliasing
analog LPF

x(t)

A/D

Decimation
LPF

fs = 2Dfmax

x(n)

11.12

aliasing

0
)

fs/2

aliasing

fmax

fs/2

11.13 aliasing


aliasing fs/2 fs
(fmax) aliasing
11.13 )
11.12
D D


1.
aliasing

11.13 ) D=4

2.
SNR

D
0 fmax
3.

aliasing fmax
() FIR
( 10)

11 219

SNR


4 SNR

1 [11]
A/D A/D

A/D 1
A/D 1 - (Delta-Sigma Modulator)
( SNR
) A/D 1

aliasing RC
A/D - A/D
- (Delta-Sigma A/D Converter)

11.14 A/D
6.4 MHz 12 400 kHz
16 100 kHz

Analog Delta-Sigma
in
Modulator

1 /
6.4 MHz

16
LPF
N=4095

16

12 /
400 kHz

LPF
N=15

MUX

16 /
100 kHz

digital
out

Output
select

11.14 A/D - (Motorola DSP56ADC16)


(Oversampling D/A) [1],[11]


D/A
(anti-imaging filter)
(reconstruction filter)

11 220

11.15 D/A
D/A


(
) D/A


A/D
1 -
D/A 1 D/A -
x(n)

Interpolatio
LPF

D/A

Anti-imaging
analog LPF

x(t)

fs = 2 I fmax

11.15
[3]

(
) 11.6
4

4
(filter bank) 4
1/4
1/4 aliasing

1 2 3 4

|X(z)|

'

11 221

x(n)

BPF

BPF

BPF

BPF

BPF

BPF

BPF

BPF

DSP

y(n)

11.16 (4 )

1
(
)

4 11.16



- (speech coding)
-
(speech recognition)
-
- (adaptive filter)
- (wavelet transform)

12 222

12



FFT


8 kHz
44 kHz A/D D/A
DSP


,
, ,


(Audio Equalizer)[1]



5
44.1 kHz

12 223

1) H1(z) 0 - 3 kHz
2) H2(z) 3 - 7 kHz
3) H3(z) 7 - 11 kHz
4) H4(z) 11 - 15 kHz
5) H5(z) 15 - 22.05 kHz
5 FIR IIR
(all pass filter)

FIR

12.1


50 LPF,
BPF, HPF
sin( 1 ( n - M))
h1(n) = w(n)
( n - M)
sin( 2 ( n - M)) - sin( 1( n - M))
h2(n) = w(n)

( n - M)

sin( 3 ( n - M)) - sin( 2 ( n - M))


h3(n) = w(n)

( n - M)

sin( 4 ( n - M)) - sin( 3 ( n - M))


h4(n) = w(n)

( n - M)

sin( 4 ( n - M))

h5(n) = w(n) ( n - M ) ( n - M)

(12.1)

M=25 i = 2fi/fs f1, f2, f3, f4 3, 7, 11, 15 kHz


hi(n)
M
h1(n) + h2(n) + h3(n) + h4(n) + h5(n) = (n-M)
z

H1(z) + H2(z) + H3(z) + H4(z) + H5(z) = z-M

(12.2)
(12.3)

12 224


H5(z) = z-M - H1(z) - H2(z) - H3(z) - H4(z)

(12.4)

Y5(z) = z-MX(z) - Y1(z) - Y2(z) - Y3(z) - Y4(z)


y5(n) = x(n-M) - y1(n) - y2(n) - y3(n) - y4(n)
H5(z)
y5(n) M
12.1


Htotal(z) = G1H1(z) + G2H2(z) + G3H3(z) + G4H4(z) + G5H5(z)
G1

H 1(z)

x(n)

G3

H 3(z)

G4

H 4(z)

H1(z)

H2(z)

y(n)

G2

H 2(z)

z -M

(12.5)

H3(z)

G5

H4(z)

H5(z)

f (kHz)

12.1 5

12 225

FIR

FIR 40 4
IIR
IIR
FIR [4] IIR
[17] IIR

(Echo)


FIR 12.2 ) h(n) n=0
h(n) n=D

h(D) = < 1
D D
D
30
= 60
335
= 60/335 = 0.1791 D 0.1791
D (sample)
= 8 kHz 0.1791
0.1791 8000 = 1430 D = 1430
D 1430 1430
h(n)

y(n) = x(n) + x(n - D)

(12.6)

12 226





12.2 )
(transient)

(steady state)

h(n)

h(n)

12.2
(Reverberation)[1],[4]
(surround)




12 227



12.3
(early
reflection)
(late reflection)
1

2 4

early
direct

late

direct

h(n)

early
late

12.3


Schroeder 1985 IIR 2
2
1) (echo generator plane reverberator)
D
an a 1 12.4
h(n) = (n) + a(n-D) + a2(n-2D) +

(12.7)

z
H(z) = 1 + az-D + a2z-2D +
(12.8)
12.7 H(z) IIR

12 228

H(z) = 1 + az-R + (az-R)2 + (az-R)3 +

H(z) =

1
1- az-D

(12.9)

D
12.4

|H(ej)|

x(n)

y(n)
z-D
a

D=15,
D

n
12.4
2) (all-pass reverberator)
1 ( |H(ej)| = 1 )

- a + z-D
H(z) =
1 - az-D

(12.10)

direct form 2 12.5


h(n) H(z) 12.10

12 229

1
B
1- a 2
H(z) = A +
, A = - B =
a
1- az-D
a
h(n) = (A+B)(n) + Ba(n-D) + Ba2(n-2D) +

(12.11)
(12.12)

h(n)

-a
x(n)
y(n)
z-D
a

D
D=15,

n
12.5
Schroeder 1 2
12.6 ai, Gi, Di


D1 = 29, D2 = 37, D3 = 44, D4 = 50, D5 = 27, D6 = 31
G1 = 1, G2 = 0.9, G3 = 0.8, G4 = 0.7
a1 = a2 = a3 = a4 = a5 = a6 = 0.8
FIR
h(n)
IIR

12 230

h(n)

(
)
, ,
FIR
262,144 48 kHz[22]
5
G1
a1

z-D
G2

x(n)

a2

-a5

z-D
G3

a5

z-D

-a6
a6

y(n)

z-D

z-D
a3
G4
a4

z-D

n
12.6

12 231

(Chorus)[1],[4]

()

12.7
D1 D2
D1(n) D2(n)
n

x(n)

y(n)
z

-D1(n)

z-D (n)
2

a1
a2

12.7
(3-Dimemsional Sound)[20],[21]


360

(headphone)

(
)


virtual reality

( )

12 232

(
)




) (Interaural Intensity Difference
IID)
) () (Interaural
Time Difference ITD)









HR(z) HL(z)
12.8
IID ITD

(Head-Related Transfer Function HRTF)

HR(z)

HL(z)

12.8 (HRTF)

12 233

HRTF FIR
HRTF


HRTF
HRTF
HL(z)


HR(z)

HRTF

HRTF
HRTF
MIT Media 1994
[20]

(Hearing Aids)[17],[18]





1.


(adaptive)
2. (Automatic Gain Control)



3. (Frequency Shaping)

12 234

(audiogram)
2
FIR IIR


(dB)

0 250 500

1k

2k

4k

8k f(Hz)

0 250 500

1k

2k

4k

8k f(Hz)

12.9

UPS[19]
UPS (uninterruptible power supply)


UPS


(IH)
(IS) 12.10 IH
(IR) IS




(50 )
(digital notch filter)

12 235

1. IH IR


( )
FIR [19]
2. UPS

( PWM), ,
, , ()

UPS

Vin

IR

IS
IH

Full Bridge
Inverter

Digital
Notch Filter

12.10 UPS

(Waveform Generators)[1],[23]
IIR
(critically stable)



direct form 0

h(n) = sin(0n)
z

(12.13)

12 236

sin( 0 ) z 2
H( z ) = 2
z - 2cos( 0 ) z + 1

(12.14)

1 0
12.11
y(n) = a0x(n) - b1y(n-1) - y(n-2)
a0 = sin(0) b1 = -2cos(0)

(12.15)

a0x(n) a0
a0
( ) b1
b1

x(n)

sin0

y(n)
2cos0

- +

z-1
z-1

12.11 direct form 1


x(n)
x(n)
( a0
n=0 a0x(n) )

12 237




[23]



0= 0.1 0.8


IIR

b 0 z D + b1 z D1 + ... + b D2 z + b D1 z
H( z ) =
zD - 1
2

(12.16)

D D
1
h(n)1 = [ b0 b1 b2 ... bD-1 ]

(12.17)

D=4

b 0 z 4 + b1 z3 + b 2 z2 + b 3 z
H( z ) =
z4 - 1

b 0 + b1 z 1 + b 2 z 2 + b 3 z 3
H( z ) =
1 - z 4

(12.18)

Y(z) [1-z-4] = X(z) [b0 + b1z-1 + b2z-2 + b3z-3]



y(n) = y(n-4) + b0x(n) + b1 x(n-1) + b2 x(n-2) + b3 x(n-3)

(12.19)

12 238

h(n) x(n) (n)


y(n) h(n) z 12.19
h(n) = h(n-4) + b0(n) + b1 (n-1) + b2 (n-2) + b3 (n-3)

(12.20)

4 n=0 n=3 h(n-4) 4



(12.20)
h(n) = b0(n) + b1 (n-1) + b2 (n-2) + b3 (n-3)

(12.21)

4 [b0 b1 b2 b3 ]
n=4 (n), (n-1), (n-2), (n-3)
h(n-4)
h(n) = h(n-4)

(12.22)

4 h(4)=h(0), h
(5)=h(1), h(6)=h(2), ... h(n)
n=4 12.12

h(n) = h(n-3)

h(n)
b0

b1

b2

b3
b0

b1

b2

b3
b0

b1

b2

b3
b0

b1

b2

b3

...

0 1 2 3 4 5 6 7 8 9 10 ...

12.12 h(n) 12.18

12 239

(Adaptive Filters)[2], [10]









1.
12.13


2.

3.



12.13
y(n) = s(n) + x2(n)
x(n)

FIR

e(n) = !s ( n )

x! 2 ( n )

h(n)
Adaptive
algorithm

12.14

12 240

12.14
FIR
(adaptive algorithm)

(statistical signal processing)
(adaptive signal processing)
(estimation theory)

(random signal)

LMS (Least Mean
Square)

12.14
1. x(n) y(n) y(n)
s(n) x2(n) s(n) x2(n)

2. s(n) x2(n) (statistical
independent) 2
x(n) x2(n)
3. x(n) x2(n)
FIR
x(n) x2(n) 12.15



FIR

x(n)

x2(n)

12.15 x(n) x2(n)

12 241

4. x(n) FIR h(n) N


x! 2 ( n ) h(n)
x(n) x2(n) x! 2 ( n ) x2(n)
x! 2 ( n ) y(n) 12.14

e(n) s(n) x2(n) s(n)
h(n) e(n) x(n)
h(n) FIR h(n) h(n)

LMS
e(n) 12.14
e(n) = y(n) - x! 2 ( n ) = s(n) + x2(n) - x! 2 ( n )

(12.23)

()

E[e2(n)] = E[(s(n) + x2(n) - x! 2 ( n ) )2]

(12.24)

n
E[ e2 ] = E[ (s + x2 - x! 2 )2 ]

(12.25)

E[ e2 ] = E[ s2 + 2 s (x2 - !x 2 ) + (x2 - !x 2 )2 ]
E[ e2 ] = E[ s2 ] + 2E[ s x2 ] - 2E[ s x! 2 ] + E[ (x2 - x! 2 )2 ]

(12.26)

s x2 s x! 2

12.26

12 242

E[ e2 ] = E[ s2 ] + E[ (x2 - !x 2 )2 ]

(12.27)


e(n) s(n)
x2(n) x! 2 ( n )
x2(n) x! 2 ( n )

x! 2 ( n ) h(n) FIR
N
x! 2 ( n ) = h0(n)x(n) + h1(n)x(n-1) + ... + hN-1(n)x(n-N+1)

(12.28)


n
(
h ( n ) n (x ( n )
h0 ( n)
h (n)
1
(

h( n) =
)

h ( n )
N-1

x( n )
x ( n -1 )
(

x ( n ) =
)
x ( n - N +1 )

(12.29)

N 1 (x ( n )
N
12.29
(
x! 2 ( n ) = h(n) T (x ( n )

(12.30)

e(n) h(n) y(n) x! 2 ( n ) s(n)


h(n) 12.27 E[ e2 ] E[ (x2 - !x 2 )2 ]
h(n)
h(n) E[(x2 - x! 2 )2] E[ e2 ]

12 243

E[ e2 ] h(n) = E[ s2 ] + E[ (x2 - !x 2 )2 ] h(n)

(12.31)


h(n) h(n)
E[ e2 ]

E[(x2 - !x 2 )2]
(Wiener Filter)
h(n) n

h(n)
x(n) y(n)


LMS, RLS,
Kalman





1.

2.
LMS Least Mean Square .. 1960
(Widrow and Hoff)
steepest descent ()


LMS

(
= 2 e(n) (x(n)

(12.32)

n+1

12 244

(
(
(
h(n +1) = h(n) +

(12.33)


0.001 0.1



12.32 12.33

(
(
h(n +1) = h(n) + 2e( n ) (x ( n )

(12.34)

LMS
12.16

(
h ( n ) *x(n)

x(n) y(n)
(
x ( n )
FIR

(
x! 2 ( n ) = h ( n ) T (x ( n )

x(n)
x(n -1)
(x ( n ) =

)
x(n - N +1)

x(n-N)

e(n)

e(n) = y(n) - x!2 ( n )

(
(
h(n +1) = h(n) + 2e( n ) (x ( n )

12.16

12 245

12.1


x(n), y(n), , 12.16
e(n)
(
(x ( n ) h ( n )
(
h ( n )

12.2 lms ( 12.1)


x(n) s(n) white gaussian randn
MATLAB h_env x2
(n) x(n) FIR
y(n) x(n) LMS s(n) y
(n) h err

h err s(n)
LMS

n (coefficient error norm)


order -1

h_norm(n) =

( h i ( n ) h _ env i ( n )) 2
i= 0

order -1

h _ env i ( n )

(12.35)

i=0

function [h,err]=lms(x,y,mu,order);
h(1,:)=zeros(1,order);
xvec=zeros(1,order);
for i=1:length(x)
xvec(2:order) = xvec(1:order-1);

% x(n)
xvec(1)=x(i);
x2_est = h(i,:)*xvec';
err(i) = y(i) - x2_est;
h(i+1,:) = h(i,:) + 2*mu*xvec*err(i);
end
h(i+1,:)=[];

12.1 lms.m FIR

12 246
mu=0.005;
order=9;
h_env=[0.1054,0.1839,0.2596,0.2500,0.1558,0.0613,0.0151,0.005,0.002];

% w
%
N=500;
% x(n) white gaussian
x=randn(1,N);
% x(n) FIR h x2(n)
x2=filter(h_env,1,x);
s = 0.5*randn(1,N); % s(n) white gaussian
y = s + x2;
[h,err] = lms(x,y,mu,order);
hend = h(N,:);
h_norm = (h-ones(N,1)*h_env).^2;
h_norm = sum(h_norm');
hh = h_env*h_env';
h_norm = h_norm/hh;
plot(h_norm)

12.2 runlms.m lms.m


12.2 h_norm
h_norm
LMS

(Echo Cancellation) [2], [10]



2
1.
(hybrid transformer)
( local loop) 2
(trunk)


12.17

2. (speakerphone)
(video conference)

12 247



12.18
x(n)

Hybrid

Hybrid

FIR

x2(n)
^x (n) _
2
^
S(n)


s(n)

+
y(n)=s(n)+x2(n)

12.17

x(n)

FIR

x2(n)
^x2(n) _
^s(n)

s(n)
y(n) =
s(n)+x2(n)

12.18
(x2(n))
(x(n)) FIR FIR

12 248

1) (x(n)) 2)
(y(n) = s(n) + x2(n))
e(n) s(n)
x! 2 ( n ) x2(n)

LMS
1) Normalized LMS LMS

LMS
2) LMS
LMS
LMS

Matlab 249


Matlab

Matlab
Matlab for Windows 4.2
Matlab
>> ( prompt Matlab)
Matlab

Matlab

Matlab
Matlab


+ , - , * , / , ^
3(2+4)
Matlab ..
>> 3*(2+4)
ans = 18

Matlab
1.
2.
3.
32
3^2*5/4/2+1 2 4 5 + 1 6.625
3x10-11
3e-11

Matlab 250

Matlab
=

2 a
>> a=2
a=2
b
>> b=3*(a+4)
b = 18
Matlab (;)

>> a = 2;


(
) a z A Z, 0 9,
_ 1 a11_79

who
enter
.>> who

Your variables are:
a b
a
>> a
a=1
Matlab
clear clear
clear
>> clear a b a b



doskey DOS

Matlab 251


Matlab a
1 2 3

4 5 6
7 8 9

>> a = [1 2 3; 4 5 6; 7 8 9];
a = [1, 2, 3; 4, 5, 6; 7, 8, 9]
(,)
(;) ( Matlab)
( )
( )

>> a = [1 2 3 4 5 6 7];

>> a = [1; 2; 3; 4; 5; 6; 7];



(:)
a = [1 2 3 4 5 6 7 8 9]
>> a = 1:9 ( a=[1:9] )
a = [1 1.5 2 2.5 3 3.5 4 4.5 5]
>> a = 1 : 0.5 : 5
a = [3 1 -1 -3 -5 -7 -9]
>> a = 3 : -2 : -10
[ : : ] [ ]
1

(Matrix operations)


a*b a b a
b a^2 a (square)
transpose
( ' )
b transpose a
>> b=a'

Matlab 252

a conjugate transpose
transpose a (
) transpose .'
>> b=a.'

(Array operations)
()
>> a = [1 2 3];
>> b = [4 5 6];

a
b .*
>> a.*b
ans = [4 10 18]
.*

a b
>> a./b
a b
>> a.^b
a 3
>> a.^3
a 3 ()
>> a+3
.+ .-



sin a
>> sin(a)

()

1 2 3

a = 4 5 6
7 8 9

Matlab 253

a a(, ) a(2,3)
6 Matlab

>> a([1 2] , [2 3]) a(1:2 , 2:3) 1 2 2 3
2 3
ans =

5 6
>> a(2 , [1 3])
ans = [ 4 6 ]
>> a(2 , :)
ans = [ 4 5 6 ]

2 1 3

2 ( :)
>> a(: , 2)
2
ans = 5

8
""

>> a = [1 2 3 4 5 6 7 8 9];
3
>> a(3)
ans = 3
2 5
>> a(2:5) a([2:5])
ans = [2 3 4 5]
1, 3, 5, 7, 9
>> a(1:2:9)
ans = [1 3 5 7 9]

Matlab

Matlab

Matlab 254

Matlab i j -1
j i
j
a 2 + j2
>> a = 2 + j*2;
>> b = 3 + j*4;
>> a*b
ans = -2.0000 +14.0000i
Matlab i
j
j j -1
exp( )
pi
a 2ej/4 245o
>> a = 2*exp(j*pi/4)
a = 1.4142 + 1.4142i

a
>> real(a)
a
>> imag(a)
a
>> abs(a)
a ()
>> angle(a)
a
>> conj(a)

Matlab

Help help


help
plot
>> help plot

( help)

0 n x m
>> zeros(n,m)
1 n x m
>> ones(n,m)

Matlab 255

identity n x n
>> eye(n)
0 1 n x m
>> rand(n,m)
n x m
>> randn(n,m)

sin, cos, tan, asin, acos, atan, atan2


sinh, cosh, tanh, asinh, acosh, atanh
exp (), log ( e), log10 ()
abs (),
sign ( ), rem ()
round (), floor (), ceil ()
sqrt ( )

max (), min (), length ()
mean (), median (), std ( )
sum (), sort ()
roots ()

size (),
eig ( eigen), det ( determinant)

(Script programs)
Matlab
.m ( .m)
prompt Matlab


Matlab

(text editor)
Matlab
File -> New File -> Open M-file Matlab notepad
Matlab
Options -> Editor Preference

Matlab 256

notepad Windows 95
.m notepad .txt


save ( abc.m) Matlab PFE
(Programmer File Editor)

(search path)


Matlab


if
if < >
<>
elseif < >
<>
else
<>
end

(elseif )

<>
< > 0 1
if a == b & ok
a b ok 1
a = a+1;
a
else

a = a-1;
a
end


==

~=

<

>

<=

>=

Matlab 257


&
(and)
~
(not)

(or)

/
0 1

>> a = [1 2 3 4] > 2
a = [0 0 1 1]
2
( )

>> a = [1 2 3 4] == [1 4 3 5]
a = [1 0 1 0]
while
while < >
<>
end
i = 10; a=1;
while i > 1
a = a*i;
i = i - 1;
end
a 10! (10 ) 10*9*8* 1
for
for = : :
<>
end
a=1;
for i = 1:10
a = a*i;
end

Matlab 258

10! while
for

ctrl-C

(Function programs)
Matlab
.m

1.
2.


function = ( )

function out = fact(x)
out = 1;
for i = 2 : x
out = out*i;
end
fact.m Matlab
>> fact(5)
ans = 120
>> fact(0)
ans = 1
i x


Matlab

Matlab 259

function [t, out] = gensine(f, fs, N)


%This function generates a sin wave output.
% usage [t, out] = gensine(f, fs, N)
% or [out] = gensine(f, fs, N)
%where f : frequency, fs : sampling rate, N : number of samples
% t : time vector, out : output vector
if nargin==2 N=100; end

% set default N

t = [0:N-1]/fs;
out = sin(2*pi*f*t);

% t is time vector.
% out is sine wave vector.

if nargout==1 t = out; end

% if there is only only 1 output, then


% return "out" as "t".

(f), (fs),
(N) t out t out
[ ]
>> [t,x] = gensine(200, 1e5, 200);
t x

N=100
t t=out

N 100
>> x = gensine(200, 1e5);

nargin nargout ( number of arguments in number of arguments out)
%


help

>> help gensine

Matlab 260


Matlab DOS

pwd cd

cd <path>

dir

type <file>

delete <file>

(search path)
path
Matlab




path
path
>> path(path, 'c:\data\myfunc')
Matlab c:\data\myfunc
Matlab
startup.m ( \matlab\bin)

Matlab matlabrc.m ( \matlab)

Matlab
Matlab

t, x, y gensine

>> [t,x] = gensine(50,1000);
>> [t,y] = gensine(20,1000);
x y t
t x
>> plot(t, x)
( )
>> hold on
y

>> plot(t, y, 'b-.')

Matlab 261

>> grid
>> axis( [0 0.1 -1.5 1.5] )

0
0.1 -1.5 1.5

>> xlabel('time (sec)')

>> ylabel('signal (V)')


>> title('Samples of Sine Waves')
( )
>> hold off
.1

plot 3
plot( , , )
plot(x) Matlab
1, 2, 3,
' '
b
, r , k , w , y , m , c , g
- , : , -- , -. ,
. , * , + , x , o

hold
plot
>> plot(t, x, t, y, 'b-.')

.1 Matlab

Matlab 262

subplot(231)

subplot(232)

subplot(233)

subplot(234)

subplot(235)

subplot(236)

.2 subplot


whitebg
Matlab \matlab\bin\startup.m
stem plot
semilogx semilogy plot
figure ()
clf
zoom
zoom


subplot(n,m,i) subplot(nmi) n x m
i subplot(231) 6 1 .2

subplot

Matlab 263

tic toc tic; ; toc


FFT 1024
>> tic; fft(1:1024); toc
elapsed_time = 0.0600
0.06
flops (floating-point operation)

flops flops(0); ; flops


>> flops(0); fft(1:1024); flops
ans = 31050
31050 flops

Matlab
save load
>> save matlab.mat
clear who
load
>> load matlab.mat
save load

save
a b myvar.mat
>> save myvar a b
myvar.mat
>> load myvar

(string)
Matlab
Matlab ' '
a 'hello'
>> a='hello'
a a
a(1) = 'h', a(2) = 'e',
disp
abs

Matlab 264

eval eval('1+1') = 2
num2str, int2str
fprintf printf

sprintf fprintf

fscanf, sscanf
input
help

input fprintf
answer = 'y';
while answer == 'y'
a = input('Please input a number : ');
fprintf(1, '%7.2f square is %7.2f\n', a, a^2);
answer = input('Continue (y/n) ? ', 's');
end
printf id 1

(sound card) Matlab



.wav
wavread, wavwrite, sound
>> [x, fs] = wavread('c:\windows\tada.wav');
tada.wav x fs
x
tada.wav x
Matlab

>> sound(x, fs)
wavwrite Matlab
DTMF 1

Matlab 265

697 Hz 1209 Hz gensine


press1.wav
>> fs=11025; f1=697; f2=1209;
>> x = gensine(f1, fs, 5500) + gensine(f2, fs, 5500);
>> sound(x, fs)
>> wavwrite(x, fs, 'press1.wav') x press1.wav


()

plot
plot
handle plot (

set property )
property Ydata handle

n=0:99;
x=zeros(1,100);
h = plot(n, x, 'EraseMode', 'xor', 'color', 'c');
axis([0 100 -1 1]); grid on;
for i=1:1000
x(1:99) = x(2:100);
x(100) = sin(0.1*i);
set(h, 'Ydata', x);
pause(0);
end

h
handle plot

> x
x property Ydata h

Matlab DSP Toolbox 266


Matlab DSP Toolbox

DSP Toolbox Signal Processing Toolbox


Matlab ( )


DSP Toolbox 3.0

Sinc

conv

fftfilt
overlap-add
filter

freqz

grpdelay

impz

unwrap
-
zplane
/

residuez

sos2tf

sos2zp

tf2zp

zp2sos

zp2tf

IIR
butter
Butterworth
cheby1
Chebyshev type I
cheby2
Chebyshev type II
ellip
Elliptic

Matlab DSP Toolbox 267

yulewalk
buttord
cheb1ord
cheb2ord
ellipord

Yule-Walker
Butterworth
Chebyshev type I
Chebyshev type II filter
Elliptic filter

FIR
fir1

fir2

remez
Parks-McClellan
remezord
Parks-McClellan

fft
fftshift
hilbert
ifft
psd
xcorr
specgram
bilinear

FFT
FFT
Hilbert
FFT
Power Spectral Density
Cross-correlation
Spectrogram
Bilinear

bartlett
blackman
boxcar
chebwin
hamming
hanning
kaiser
triang

Bartlett
Blackman

Chebyshev
Hamming
Hanning
Kaiser
Triangular

decimate
decimator
interp
interpolator
resample
I/D

Matlab DSP Toolbox 268

besselap
Bessel
buttap
Butterworth
cheb1ap
Chebyshev type I
cheb2ap
Chebyshev ty[pe II
ellipap
Elliptic
lp2bp
LPF BPF
lp2bs
LPF BSF
lp2hp
LPF HPF
lp2lp
LPF LPF

filtdemo

sosdemo

269


[16]
**
*

analog
digital
sampling**
sampling rate**, sampling frequency
aliasing**
anti-aliasing filter*
reconstruction*
reconstruction filter*
quantization*
quantize*
image**

,
,
aliasing ( -- )
aliasing


pulse
impulse
sinc**
discrete , discrete-time*
continuous , continuous-time*
spectrum
real time
stability
stable
causality*

270

causal*
non-causal*
anticausal*
difference equation**
impulse response
transfer function
pole
zero
frequency response
normalized frequency
transient response
steady-state response
harmonic frequency


Fourier transform
Discrete-Time Fourier Transform*
Discrete Fourier Transform*
Fast Fourier Transform*
Fourier series
Laplace transform
z transform
inverse z transform*
region of convergence (ROC)*
convolution
linear convolution*
circular convolution*
decimator*
interpolator*
down-sampler*
up-sampler*


, DTFT
, DFT
FFT

z
z

order*
low-pass filter
high-pass filter
band-pass filter

(LPF)
(HPF)
(BPF)

271

band-stop filter*
cutoff frequency
ripple
ripple factor
attenuation
pass band
stop band
transition band*
window function*
rectangular window*
Hamming window*
Kaiser window*
bilinear transform*
adaptive filter*

(BSF)


random signal**
fixed-point**
floating-point
mantissa
exponent
overflow

272

[1] S. J. Orfanidis, Introduction to Signal Processing, Prentice Hall, Englewood Cliffs, NJ, 1996.
[2] E. C. Ifeachor, and B. W. Jervis, Digital Signal Processing: A Practical Approach, Addison-Wesley, New
York, 1993.
[3] J. G. Proakis, and D. G. Manolakis, Digital Signal Processing: Principles, Algorithms, and
Applications, 3rd ed., Prentice Hall, NJ, 1996.
[4] S. K. Mitra, Digital Signal Processing A Computer-Based Approach, McGraw-Hill, Singapore, 1998.
[5] R. Kuc, Introduction to Digital Signal Processing, McGraw-Hill, Singapore, 1982.
[6] A. V. Oppenheim and R. W. Schafer, Digital Signal Processing, Prentice Hall, Englewood Cliffs,
NJ, 1975.
[7] V. K. Ingle, J. G. Proakis, Digital Signal Processing Using Matlab V.4, PWS Publishing Company,
Boston, 1997.
[8] W. W. Smith, and J. M. Smith, Handbook of Real-Time Fast Fourier Transforms, IEEE Press,
Piscataway, NJ, 1995
[9] R. G. Lyons, Understanding Digital Signal Processing, Addison Wesley, Reading, MA, 1997
[10] S. Haykin, Adaptive Filter Theory, 3rd ed., Prentice Hall, Upper Saddle River, NJ, 1996.
[11] D. Johns and K. Martin, Analog Intergrated Circuit Design (Chapter 14 Oversampling Converters), John
Wiley and Sons, Toronto, 1997
[12] K. Sigmon, Matlab Primer, 2nd ed., University of Florida, Gainesville, 1992 (
ftp://ftp.mathworks.com/pub/doc/primer/ ftp://ftp.ee.mut.ac.th/ pub/Matlab/)
[13] TMS320C5x DSP Starter Kit Users Guide, Texas Instruments, Dallas, TX, 1994
[14] TMS320C3x Users Guide, Texas Instruments, Dallas, TX, 1997
[15] TMS320C5x Users Guide, Texas Instruments, Dallas, TX, 1993
[16] , ,
, , 2539
[17] H. McAllister, N. Black, and N. Waterman, Hearing aids - a development with digital signal processing
devices, Computer and Control Engineering Journal, 1995, vol. 6, pp.283-291
[18] N. Magotra and S. Sirivara, Real-time digital speech processing strategies for the hearing impaired, IEEE
International Conference on Acoustics, Speech, and Signal Processing, 1997, vol. 2, pp. 1211 -1214.
[19] Y. Qin and S. Du, A DSP based active power filter for line interactive UPS, Proceedings of the 1995 IEEE
IECON 21st, 1995, vol. 2, pp. 884-888.
[20] B. Gardner and K. Martin, HRTF Measurements of a KEMAR Dummy-Head Microphone, MIT Media
Lab Perceptual Computing - Technical Report #280, 1994

273

[21] Aureal Home Page, http://www.aureal.com/, 1998.


[22] A. Reilly and D. Mcgrath, Convolution Processing for Realistic Reverberation, Lake DSP Technical
Paper, 1995. (http://www.lakedsp.com/)
[23] ,
IIR, 21, 1998, 433-436

You might also like