2014 3 10 5
1 5 1.1..................................... 5 2 6 2.1.................................... 6 2.2 Z........................................ 6 2.3.................................. 6 2.3.1.................. 7 2.4....................................... 8 2.5.................................. 8 2.5.1......................... 10 2.5.2........................... 11 2.5.3................. 11 3 ex6 1 12 3.1 ex6 1..................... 12 3.2 ex6 1.c........................................ 14 3.3.......................... 17 3.4 sinc....................................... 18 4 19 A Fourier 19 A.1 1........................................ 19 A.2 2........................................ 20 A.3 3........................................ 20 B Fourier Fourier 20 B.1 Fourier..................................... 20 B.2 Fourier.................................. 21 C Fourier 23 D 23 1 1.1 C 6
[1 6 ex6 1.c 2 2.1 x : R C T s > 0 x n := x(nt s ) (n Z) {x n } n Z C Z T s Sampling period T s T s. Ω R x(t) = e iωt T s > 0 x n := x(nt s ) x n = e iωnts = e inω. ω := ΩT s {x n } e iω e iω = 1 2.2 Z Z,1 N, N 0 := N {0} {x n } x : R C T s > 0 x n = x(nt ) {x n } n Z C Z X(z) := n Z x n z n X = X(z) {x n } Z (z C, ) 2.3 {x n } n {y n } F : {x n } {y n } 7
2.3.1 F F ({x n } + {y n }) = F ({x n }) + F ({y n }), F (c{x n }) = cf ({x n }) k Z F ({x n k }) = {y n k } n n Z X := C Z = {{x n } n Z ; n Z x n C} F : X X h C Z s.t. x C Z F (x) = x h. h h = F (δ) δ = {δ n } n Z δ n := δ n0 = { 1 (n = 0) 0 (n 0) (Kronecker δ ij δ n = δ n0 ) h F h = F (δ) F [1] h n b n FIR J N s.t. b n = 0 (n < 0 or n > J) b m (0 m J) y n = J x n k b k (n Z) k=0 {x n } n 0, {y n } n 0 y n = min{j,n} m=0 x n m b m 8
2.4 x(t) = e iωt {x n } x n = x(nt s ) = e iωnts = e inω, ω := ΩT s {x n } e iω h = {h n }, y = {y n }, y = x h h z H(z) n Z y n = k Z x n k h k = k Z e i(n k)ω h k = e inω k Z e ikω h k = H(e iω )x n. y = H(e iω )x. h h z H(z) e iω H(e iω ) ω ω H(e iω ) (transfer function) ω [0, 2π] ω [ π, π] (1) G(ω) := H(e iω ), θ(ω) := arg H(e iω ) (arg ) G(ω) (gain),θ(ω) (phase shift) 2.5 x(t) = e iωt T s x n := x(nt s ) = e iωnts = e inω (n Z), ω := ΩT s. x = {x n } y = {y n } {h n } y n = x n k h k = ( ) e i(n k)ω h k h k = e inω = H(e iω )e inω. e ikω k Z k Z H {h n } z : H(z) := k Z X(ω) := H(e iω ) ω e (0, π) { 1 ( ω ωe ) X(ω) = ([ ω e, ω e ] ) = 0 ( ω > ω e ) 9 k Z h k z k.
1.0 0.8 0.6 0.4 0.2 3 2 1 1 2 3 1: X(ω) = k Z h n e inω (ω R) X {h n } Fourier Fourier h n = 1 π X(ω)e inω dω (n R) 2π π 2π Fourier i i Fourier Fourier 2π x : R C c n := 1 2π pi π x(θ)e inθ dθ (n Z) x(θ) = k Z c n e inθ (θ R) {h n } h n = 1 2π π π X(ω)e inω dω = 1 2π ωe ω e e inω dω = ω e π sinc nω e. f e f e = ω e 2π f s ω e = 2π f e f s h n = 2πf e/f s π sinc 2nπ f e f s = 2 f e f s sinc 2nπf e f s. 10
b m = w m h m J/2 w m b m h m J/2 n J/2 y n = x n k h k x n k h k J x n k b k+j/2 = x n J/2 m b m = y[n J/2]. k Z m=0 k J/2 k J/2 2.5.1 h n = ω e π sinc nω e X J (ω) := h n e inω n J/2 Mathematica Clear[n, t, w, x]; w[x_]:=(1-cos[2 Pi x])/2; omega=0.5; h[n_]:=omega/pi Sinc[n omega]; draw[j_]:=plot[sum[h[n]exp[-i n t], {n, -J/2, J/2}],{t, -Pi, Pi}, PlotRange -> All]; f(ω) := 50 n= 50 h n e inω f(ω) H(e iω ) 1.0 0.8 0.6 0.4 0.2 3 2 1 1 2 3 2: (J = 100) Gibbs 11
2.5.2 (hann window), von Hann window,2 (raised cosine window) (hanging wndow) w(x) = 1 cos 2πx 2 (0 x 1). 1.0 0.8 0.6 0.4 0.2 0.2 0.4 0.6 0.8 1.0 3: hann w(x) = 1 cos 2πx 2 void Hanning window(double w[], int N) N ( n ) w (N ) N w n := ( n + 1/2 ) (n = 0, 1,..., N 1) w (N ) N w = {w n } N 1 n=0 N w w(1/2) = 1 Hanning window() Mathematica Clear[w]; w[x_]:=(1-cos[2 Pi x])/2; hanningwindow[n_]:=if[evenq[n], Table[w[n/N], {n, 0, N-1}], Table[w[(n+1/2)/N], {n, 0, N-1}]] 2.5.3 h n h n := h n w(n/100) f(ω) = 50 n= 50 12 h n e inω
draw2[j_]:=plot[sum[w[n/j-1/2]h[n]exp[-i n t],{n, -J/2, J/2}], {t,-pi,pi}, PlotRange -> All] 1.0 0.8 0.6 0.4 0.2 3 2 1 1 2 3 H(e iω ) 4: (J = 100) 3 ex6 1 [1] ex6 1.c ex6 1 sine 500hz 3500hz.wav WAVE 16 PCM 500Hz, 3500Hz 1000Hz, 1000Hz ex6 1.wav 3.1 ex6 1 ex6 1.c wave.h.wav wave {read write} {8 16}bit {stereo mono}() void 2 1 PCM 2 window function.h 1 cos 2πx ex6 1 hann window w(x) = x 13
sinc.h sinc sin πx sin x sinc(sinc x = ) sinc(sinc x = πx x ) fir filter.h FIR ex6 1 (a) FIR filtering(x,y,l,b,j) y = x b x = {x[n]} L 1 n=0,b = {b[m]} J m=0 ( ) y[n] = minj,n m=0 y = {y[n]} L 1 n=0 b[m]x[n m] (n = 0,..., L). (b) FIR LPF(fe, J, b, w) fe {b m } J m=0 {w m } J m=0 14
3.2 ex6 1.c ex6 1.c #include <stdio.h> #include <stdlib.h> #include <math.h> #include "wave.h" #include "window_function.h" #include "sinc.h" #include "fir_filter.h" int main(void) { MONO_PCM pcm0, pcm1; int n, m, J; double fe, delta, *b, *w; wave_read_16bit_mono(&pcm0, "sine_500hz_3500hz.wav"); pcm1.fs = pcm0.fs; /* */ pcm1.bits = pcm0.bits; /* */ pcm1.length = pcm0.length; /* */ pcm1.s = calloc(pcm1.length, sizeof(double)); /* */ fe = 1000.0 / pcm0.fs; /* */ delta = 1000.0 / pcm0.fs; /* */ J = (int)(3.1 / delta + 0.5) - 1; /* */ if (J % 2 == 1) { J++; /* J+1 */ } b = calloc((j + 1), sizeof(double)); w = calloc((j + 1), sizeof(double)); Hanning_window(w, (J + 1)); /* */ FIR_LPF(fe, J, b, w); /* FIR */ /* */ for (n = 0; n < pcm1.length; n++) { for (m = 0; m <= J; m++) { if (n - m >= 0) { pcm1.s[n] += b[m] * pcm0.s[n - m]; } } } wave_write_16bit_mono(&pcm1, "ex6_1.wav"); free(pcm0.s); free(pcm1.s); free(b); free(w); } return 0; fe = 1000.0 / pcm0.fs; /* */ 1000Hz fe (1/8000s) 15
1/8 f s, f e fe f e /f s fe f e fe= f e /f s delta = 1000.0 / pcm0.fs; /* */ 1000Hz f s, δ delta= δ/f s {b m } J m=0 J + 1 J = (int)(3.1 / delta + 0.5) - 1; /* */ if (J % 2 == 1) { J++; /* J+1 */ } 3.1/delta 1 J = round(3.1 / delta); if(j % 2 == 1) { J--; } 3.1/delta 1 [ 3.1 J = δ f s + 1 ] p (p = 0, 1 J ) 2 J J + 1 1 0 [2] 6.2π N = 6.2π 3.1 2π [2] δ/f s 2π ex6 1 δ = 1000Hz,f s = 8000Hz J = 24 16
Hanning_window(w, (J + 1)); /* */ 3.1/delta 1 1 cos 2πx Hanning window(w, N) hann w(x) := 2 w( n ) (N ) w n := N w( n + 1/2 (n = 0, 1,..., N 1) N ) (N ) sinc hann FIR_LPF(fe, J, b, w); /* FIR */ fe(= f e /f s, ), J( ), w(= {w m } J m=0 hann ) 3 b(= {b m} J m=0, ) ( ) b m := w m 2 f e sinc 2πf e(m J/2) (m = 0, 1,..., J) f s f s fs=8000; fe=1000; delta=1000/fs; J=Round[3.1/delta]; If[OddQ[J], J=J+1]; g=plot[2*fe/fs*sinc[2 Pi fe (m - J/2)/fs], {m, 0, J + 1}] 0.25 0.20 0.15 0.10 0.05 5 10 15 20 25 0.05 5: hann g2 = Plot[w[m/(J + 1)]*2*fe/fs*Sinc[2 Pi fe (m - J/2)/fs], {m, 0, J + 1}] 17
0.25 0.20 0.15 0.10 0.05 5 10 15 20 25 6: hann 3.3 [2] f s f e f e [2] M(ω) M(ω) max M(ω) = 1 2 ω cutoff frequency δ p 1 δ p M(ω) 1 + δ p ω [0, ω p ] [0, ω p ] ω p δ s M(ω) δ s ω [ω s, π] [ω s, π] ω p [ω p, ω s ] [1] [ω p, ω s ] (ω p + ω s )/2 f s ω s ω p δ (?) f e = ω p + ω s, ω s ω p = δ 2 18
3.4 sinc sinc.h sinc sinc() sin x (x R\{0}) sinc(x) := x 1 (x = 0) sinc sin πx (x R\{0}) sinc x := πx 1 (x = 0) sinc [2] Mathematica Sinc[] sinc sinc Mathematica sinc g = Plot[Sinc[x], x, -15, 15, PlotRange -> Full] 1.0 0.8 0.6 0.4 0.2 15 10 5 5 10 15 0.2 7: sinc x = sin x x x = nπ (n Z) y = ± 1 x sinc ω p (0, π) [ ω p, ω p ] χ [ ωp,ωp] Fourier ω p π sinc ω pt 1 χ [ ωp,ω 2π p](ω)e iωt dω = 1 ωp e iωt dω 2π ω p = 1 2π [ e iωt it ] ω=ωp = ω p π sinc ω pt. 19 ω= ω p = 1 2π e iωpt e iωpt it = 1 π sin ω p t t
4 A Fourier i A.1 1 f : R n C (2) g(ξ) := 1 f(x)e ixξ dx (ξ R n ) (2π) n/2 R n g = g(ξ) f Fourier Fg, ˆf : (3) Ff(ξ) = f(ξ) = f (4) f(x) = 1 f(x)e ixξ dx (ξ R n ). (2π) n/2 R n 1 g(ξ)e ixξ dξ (x R n ) (2π) n/2 R n Fourier g : R n C (4) f = f(x) g Fourier F g, F 1 g, g : (5) F g = g(x) = 1 g(ξ)e ixξ dξ (x R n ). (2π) n/2 R n 20
A.2 2 t ω x = x(t) X(ω) := x(t)e iωt dt (ω R) X = X(ω) x Fourier Fx, ˆx : X = X(ω) Fx(ω) = x(ω) = x(t)e iωt dt (ω R). x(t) := 1 X(ω)e iωt dω (t R) 2π infty x = x(t) X Fourier F X, F 1 X, X : F X(t) = X(t) := 1 2π X(ω)e iωt dω (t R). X(ω) x(t) A.3 3 x = x(t) X(f) := x(t)e 2πift dt (f R) X = X(ω) x Fourier Fx, ˆx : Fx(f) = x(f) = X = X(t) x(t) = x(t)e 2πift dt (f R). X(f)e 2πift df (t R) x = x(t) X Fourier F X, X : F X(t) = X(t) = X(f)e 2πift df (t R). R B Fourier Fourier B.1 Fourier T x = x(t) x Fourier : a 0 2 + ( a n cos 2nπt T + b n sin 2nπt ), T n=1 21
a n := 1 T T/2 T/2 x(t) cos 2nπt T dt, b n := 1 T T/2 T/2 x(t) sin 2nπt T dt. [ T/2, T/2] [0, T ] x Fourier : n Z exp 2πnit T, c n := 1 T D N (t) := 1 T T/2 T/2 N n= N ( x(t) exp 2πnit ) dt. T exp 2πnit T (N N, t R) D N Dirichlet T x = x(t), N N x N (t) := N n= N c n exp 1πnit T, c n := 1 T T/2 T/2 ( x(t) exp 2πnit ) dt T x N = x D N, x N (t) = T/2 T/2 x(t τ)d N (τ)dτ (t R) x Fourier N x Dirichlet D N B.2 Fourier x = x(t) T [0, T ] N t j = j T N (j = 0, 1,..., N = 1) x j = x(t j ) Fourier c n = 1 T T 0 ( x(t) exp 2nπit ) dt T 22
C n := 1 T T N 1 N j=0 W 1 N ( x j exp 2nπit ) j = 1 N=1 T N ( W := exp 2πi ) N C n = 1 N N 1 j=0 x j W nj. j=0 W N = 1, W j 1 (j = 1, 2,..., N 1) ( x j exp 2nπij ). N N 1 j=0 W kj = { N (k 0 (mod N)) 0 (k 0 (mod N)) m n (mod N) C n = C m C 0, C 1,..., C N 1 {x j } N 1 j=0 X k = N 1 j=0 x j W kj (k = 0, 1,..., N = 1) {X k } N 1 k=0 {x j} N 1 j=0 Fourier {x j} {X k } Fourier (k, j) W kj W X 0 x 0 X 1. = W x 1.. X N=1 x N=1 Fourier W W W = WW = NI N x j = 1 N W 1 = 1 N W = 1 N (W jk ). N 1 k=0 X k W kj (j = 0, 1,..., N 1) 23
not U := 1 N W U = 1 N W U unitary U U = UU = I N. C Fourier {x n } n Z Fourier (discrete-time Fourier transform,dtft) (6) X(ω) := n Z x n e inω (ω R; 2π ). x n n Z x n 2 < X L 2 (0, 2π) (6) L 2 X 2π : k Z X(ω + 2πk) = X(ω). ω [0, 2π]( ω [ π, π]) x n X ( n)fourier (7) x n = 1 2π π Fourier π X(ω)e inω dω (n Z). D [1] : C, (2013). [2], : MATLAB, (2000). 24