Professional Documents
Culture Documents
DSP R10
DSP R10
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
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
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
(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)
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)
s(t) = (t - nT)
n =-
(2.2)
s(t)
x(t)
(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
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)
( * )
2 14
S(f)
n =-
= fs X ( f ) * (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)
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)
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 )
-4k -2k
2k
f(Hz)
4k
f(Hz)
t (ms)
2 21
-2k
2k
4k
f(Hz)
|Y(f)|
X! ( f )
-7k
2k 3k 4k 5k
7k
f(Hz)
aliasing
2 22
x!( t)
y(t)
t (ms)
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
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
) 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), ]
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)
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)]
3 28
3 29
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 33
(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
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
(3.13)
(3.14)
(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
(3.16)
(3.17)
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)
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 =
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)
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)
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
3z
, ROC: |z| > |a|
z a
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-
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
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
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 =
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)
-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
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 )
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) =
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)
(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
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
6 DFT FFT 71
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
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
%
% 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
(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)
(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 DFT FFT 77
6.3 DFT
x(n) Matlab 1000
11025 Hz ( Matlab )
1000
fs/N = 11025/1000 = 11.025 Hz
dB
stationary
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
N X(k ) n
n
6 DFT FFT 78
N
1
2
N
1
2
x(0),x(2),x(4),
(6.8)
x(1),x(3),x(5),
N
1
2
N
1
2
n =0
n =0
(6.9)
WNab a b 0
W N
ab
N
W =e
2
ab
N
=e
2
N
= WNab
(6.10)
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
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)
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)
4
DFT
Q1
Q2
Q3
Q4
x(0)
x(4)
2
DFT
x(2)
x(6)
2
DFT
Q1
Q2
0
W4
1
W4
-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
CMAC radix-2
6 DFT FFT 83
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
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;
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
(6.20)
2.
DFT ; N
(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
...
...
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
1 = NK - M(K-1)
(6.23)
6 DFT FFT 88
xi(n) (window
function)
FIR
(Hamming window)
w(n) = 0.54 0.46 cos(
2 n
) , n = 0, 1, 2, , N-1
N 1
(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
(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
(6.29)
h x N
6.4
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) );
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
(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)
(7.7)
M-1
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
(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
=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
=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
n=0
n=M+1
3 k n = N-1-k
7 FIR 101
M-1
n=0
k=M-1
k n ( n=k)
h(n) h(n) = h(N-n-1)
{
{h( M) +
M-1
M-1
n=0
n=0
M-1
h(n) e
j (M-n)
n=0
M-1
+ h(n) e- j (M-n)
n=0
M-1
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(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)
(7.21)
7 FIR 105
(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
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
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)
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)
(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
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
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
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
sin( b n ) sin( a n )
n
h(n) = ( n - M )
I0 ( )
( n - M )
7 FIR 115
f (Hz)
f (Hz)
7.9 7.5
7 FIR 116
(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)
7 FIR 117
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)
2) 0 1 0
1 7.6 0.3
[3]
7.8
7 FIR 119
7.7
1
2500
5000
f (Hz)
|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
H 7.3
7.13
7.13
7 FIR 121
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 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
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
)(
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
|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
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)
8 IIR 139
z-plane
q1
z-q1
z = ej
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
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
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)
a0
x(n)
z-1
z-1
a1
a2
y(n)
-b1
-b2
z-1
z-1
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)
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 IIR 144
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
x(n)
z-1
-1/3
z-1
z-1
y(n)
0.5
0.5
1/6
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
()
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)
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
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 154
(9.1)
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
(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
23
sign
23
sign
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
(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
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
-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
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.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
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)
h( n )
s
(10.12)
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)
ymax = h( n )
n= 0
s = L 1 = h( n )
n= 0
(10.14)
10 178
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)
10 180
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
1/s1
w(n)
-b1
-b2
z-1
z-1
a0 s1/s2
y(n)
a1 s1/s2
a2 s1/s2
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
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
%
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) (
)
(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)
(
)
(10.29)
10 192
(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
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
(10.36)
(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.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
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
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
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.8
rndfix
10 199
10.10 8 LPF
0.6
DSP Toolbox butter
[a,b]=butter(4,0.6)
LPF =4 =0.4
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 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
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 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
%
D/A
%
11 205
11
(fs)
11.1
aliasing
aliasing
aliasing
fs1
fs1
D/A
fs2
A/D
fs2
11.1
11 206
aliasing
) (quantization noise)
(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 )
11 215
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 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)
( n - M)
( n - M)
sin( 4 ( n - M))
h5(n) = w(n) ( n - M ) ( n - M)
(12.1)
(12.2)
(12.3)
12 224
H5(z) = z-M - H1(z) - H2(z) - H3(z) - H4(z)
(12.4)
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
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)
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
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)
(12.19)
12 238
(12.20)
(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 239
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 241
LMS
e(n) 12.14
e(n) = y(n) - x! 2 ( n ) = s(n) + x2(n) - x! 2 ( n )
(12.23)
()
(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)
12 243
(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)
(
(
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 )
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 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)
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];
(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)
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
% set default N
t = [0:N-1]/fs;
out = sin(2*pi*f*t);
% t is time vector.
% out is sine wave vector.
(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
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
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
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
Matlab 265
()
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
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
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
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