๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „๊ณต๊ณต๋ถ€/ํ†ต์‹ ๊ด€๋ จ

DSP) Overlap-Add์™€ Overlap-Save ์ปจ๋ณผ๋ฃจ์…˜

๋””์ง€ํ„ธ ์‹ ํ˜ธ x[n]์— ๋Œ€ํ•œ ์ฃผํŒŒ์ˆ˜ ์„ฑ๋ถ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

DTFT ์™€ DFT.

 

DTFT(Discrete Time Fourier Transform)์€ ์ฃผํŒŒ์ˆ˜ ์ถ•์˜ ํ‘œ๊ธฐ๊ฐ€ w(์˜ค๋ฉ”๊ฐ€)์ธ ์—ฐ์†์‹ ํ˜ธ์ด๊ณ 

DFT(Discrete Fourier Transform)์€ ์ฃผํŒŒ์ˆ˜ ์ถ•์˜ ํ‘œ๊ธฐ๊ฐ€ k์ธ ์ด์‚ฐ์‹ ํ˜ธ๋‹ค.

 

DFT๋Š” ์‚ฌ์‹ค DTFT์—์„œ N-point์— ๋Œ€ํ•ด samplingํ•œ ๊ฒฐ๊ณผ๋‹ค. ์ด์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, DTFT์—์„œ sampling๋œ ๊ฐ’์ด๋ฏ€๋กœ, DTFT๊ฐ€ ๊ทธ๋ ‡๋“ฏ์ด DFT๋„ ์ฃผ๊ธฐ์„ฑ์„ ๊ฐ€์ง„๋‹ค.

 

 

์›ํ˜• ์ปจ๋ณผ๋ฃจ์…˜(circular convolution)

๋‘ ์ด์‚ฐ์‹ ํ˜ธ์˜ convolution์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด DFT์—์„œ์˜ ๋‘ ์ด์‚ฐ์‚ฐํ˜ธ convolution์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

@์ฒ˜๋Ÿผ ์ƒ๊ธด ๊ธฐํ˜ธ๋Š” N-point๋กœ circular convolution ํ–ˆ๋‹ค๋Š” ๊ธฐํ˜ธ๋‹ค. circular convolution์€ ์ง€๊ธˆ๊นŒ์ง€ ํ•ด์™”๋˜ linear convolution๊ณผ ์‚ฌ๋ญ‡ ๋‹ค๋ฅด๋ฉด์„œ ๊ฐ™๋‹ค. ์ดํ•ด๋ฅผ ๋•๊ธฐ์œ„ํ•ด ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๊ณ , ๊ณ„์‚ฐ ์‹ ๋˜ํ•œ ์˜†์— ๊ทธ๋ ธ๋‹ค.

 ์ด๋•Œ, ์ฃผ์˜ํ•  ์ ์€, x1[n]๊ณผ x2[n]์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ํฌ๊ธฐ๊ฐ€ ๋” ํฐ ์ž…๋ ฅ์‹ ํ˜ธ์— ๋งž์ถฐ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ์‹ ํ˜ธ์˜ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์— '0'์œผ๋กœ ์ฑ„์›Œ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, N-point๋กœ circular convolution ํ–ˆ๋‹ค๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋„ N๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

circular convolution๊ณผ linear convolution์˜ ๊ด€๊ณ„.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅ์‹ ํ˜ธ x1[n]๊ณผ x2[n] ๋‘ ๊ฐ€์ง€ ์‹ ํ˜ธ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž.

์ด๋•Œ์˜ circular convolution์˜ ๊ฐ’๊ณผ linear convolution์˜ ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 circular convolution์˜ ๊ฐ’์€ 4-point ์˜€์œผ๋ฏ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ 4๊ฐœ ๋‚˜์˜ค๋‚˜, linear convolution์˜ ๊ฒฐ๊ณผ๋Š” 4+4 - 1 ์—์„œ ์ด 7๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๋•Œ, linear convolution์˜ ๊ฒฐ๊ณผ๊ฐ’์„ 4-point์— ๋งž๊ฒŒ ์ด๋™์‹œ์ผœ ๋ง์…ˆํ•˜๋ฉด, circular convolution๊ณผ ๊ฐ’์ด ๊ฐ™๋‹ค.

 

 

Overlap-Add & Overlap-Save Convolution

์ด์ œ ๋ณธ๋ก ์ด๋‹ค. LTI system์—์„œ๋Š” output์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด linear convolution์„ ์ด์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์‹ ํ˜ธ์˜ ๊ธธ์ด๊ฐ€ ๋ฌดํ•œํžˆ, ํ˜น์€ ๋งค์šฐ ๊ธธ๋•Œ, linear convolution์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์‹ ํ˜ธ๊ฐ€ ์ „๋ถ€ ๋ฐ›์•„์งˆ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ convolution์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ธด ์‹ ํ˜ธ๋ฅผ finiteํ•˜๊ฒŒ ์ชผ๊ฐœ์„œ block ๋‹จ์œ„๋กœ convolution์„ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” overlap-add ๋ฐฉ์‹๊ณผ overlap-save ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

 

 

Overlap-Add

์•„์ฃผ ๊ธด ์‹ ํ˜ธ x[n]์„ ์•„๋ž˜์™€ ๊ฐ™์ด N๊ฐœ์˜ ๊ธธ์ด๋กœ ์ž๋ฅด๊ณ , h[n]์˜ ํฌ๊ธฐ๋ฅผ M๊ฐœ ๋ผ๊ณ  ํ•˜์ž.

N๊ฐœ์”ฉ ๋‚˜๋‰œ block์„ h[n]๊ณผ L-point circular convolution ํ•œ๋‹ค. ์ด๋•Œ L=N+M-1 ์ด๋ฉฐ, x์ชฝ์˜ ๋ถ€์กฑํ•œ ํฌ๊ธฐ๋Š” 0์œผ๋กœ ์ฑ„์šด๋‹ค.

 

๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด N์”ฉ delay๋œ convolution ๊ฐ’๋“ค์„ ๋ชจ๋‘ ๋”ํ•˜๋ฏ€๋กœ overlap-add ๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ˆ๋‹ค.

์ด๋•Œ, ๋ฌธ์ œ์ ์€ ์ฒซ ํ•ญ y[0]์—์„œ overlap๋˜๋Š” ๋ถ€๋ถ„์ด ์—†์–ด ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•œ ๊ฒƒ์ด overlap-save๋‹ค.

 

Overlap-Save

์šฐ์„ , overlap-add์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜์—ฌ ์ฒซ ์ž…๋ ฅ์‹ ํ˜ธ์˜ ์•ž๋ถ€๋ถ„์„ zero padding ํ•ด๋ฒ„๋ฆฐ๋‹ค.

zero-padding ํ•˜๋Š” ๊ฐœ์ˆ˜๋Š” ํ›„์ˆ ํ•˜๊ฒ ๋‹ค.

 

 

๋งŒ์•ฝ h[n]์ด M๊ฐœ, x[n]์ด N๊ฐœ์”ฉ์ธ block๋“ค ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, block์ฒ˜๋ฆฌ L =  M + N - 1์ด๋‹ค.

์ด๋•Œ, block์˜ ํฌ๊ธฐ๋ฅผ L๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ธ L'์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ,  L'์˜ block์ฒ˜๋ฆฌ ์ค‘, L - L' ๋งŒํผ์˜ error๊ฐ€ ํฌํ•จ๋˜์–ด ๋ฒ„๋ฆฌ๋ฏ€๋กœ ์ด ๋งŒํผ์„ ๋ฒ„๋ฆฐ๋‹ค. ์ด๋•Œ๋ฌธ์— Overlap-Save ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋ฒ„๋ฆฌ๋Š” ๋ถ€๋ถ„ ( L' )์ด 2์ด๋ฏ€๋กœ, ๊ฐ circular convolution ๊ฐ’ ๋งˆ๋‹ค ๊ฒฐ๊ณผ์˜ ๋‘๊ฐœ์”ฉ ๋ฒ„๋ฆฐ๋‹ค.

๋˜ํ•œ, ๋งจ ์•ž๋ถ€๋ถ„๊ณผ ๋งจ ๋’ท๋ถ€๋ถ„์˜ zero-padding ๋˜ํ•œ L'์— ํ•ด๋‹นํ•˜๋Š” 2์”ฉ ์ด๋‹ค.