快速演算法設計的原則

来自testwiki
2001:b400:e2df:d1ac:8884:a48e:d313:bd89留言2023年1月30日 (一) 11:52的版本 (已有連結,刪除dead end模版)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Multiple issues

快速演算法設計原理

  • 快速演算法的主要目標為節省計算時間,採取手段主要如下:
    1. 減少加法數量
    2. 減少乘法數量
    3. 減少迴圈數量
    • 其中以減少乘法數量最為重要,可以最為高效率節省計算量。

快速演算法的設計重要的四種概念

N-point DFT

對於任何點數的離散傅立葉轉換(DFT),都有其適合的快速演算法.

線性非時變系統的運算複雜度

由於線性非時變系統可以用卷積Convolution來表示,故我們可以說其運算複雜度為,三個傅立葉轉換的計算量(包括兩個FTs 以及一個IFT)
3θ(NlogN)
θ(NlogN)
若使用了快速演算法,我們可以將其運算複雜度降為θ(N)

Replacement of DFTs

對於DFT的計算有複數(complex number)的問題,我們也可以透過矩陣的方式來處理.

運算簡化技巧

下面以四個例子來解說:

(1) y1=ax1+2ax2y1=(a2a)(x1x2)
y1=a(x1+2x2)
⇒1 MULs, 1 ADD (一個乘法,一個加法)


(2)(y1y2)=(aaaa)(x1x2)
y1=a(x1+x2)
y2=y1
⇒1 MULs, 1 ADD


(3)(y1y2)=(abba)(x1x2)
(y1y2)=(a+b2a+b2a+b2a+b2)(x1x2)+(ab2ab2ab2ab2)(x1x2)
⇒2MULs, 4 ADDs


(4)(y1y2)=(abca)(x1x2)
(y1y2)=(aaaa)(x1x2)+(0baca0)(x1x2)
⇒3MULs, 3 ADDs


複數的乘法

if x=a+ib and y=c+id
xy=acbd+i(ad+bc)
令e為實數項,f為虛數項
(ef)=(cddc)(ab)=(cccc)(ab)+(0cddc0)(ab)
(1) let x1=c(a+b) ; y1=x1
(2) let x2=(cd)b ; y2=(dc)a
e=x1+x2 ; f=y1+y2 ⇒3MULs, 3~5 ADDs 從這裡我們可以看出虛數的乘法量大致為實數乘法量的三倍[1]

参考

Template:Reflist

  1. Jian-Jiun Ding, Advanced Digital Signal Processing class note, the Department of Electrical Engineering, National Taiwan University (NTU), Taipei, Taiwan, 2018&2020.