包開云
摘 要:用方波替代正弦波進(jìn)行離散傅里葉變換(DFT)的一種算法,以便能在一些計(jì)算能力不是很強(qiáng)的嵌入式系統(tǒng)內(nèi)作傅里葉變換。此算法本身不存在變換誤差。對(duì)方波的離散總是存在誤差,但是隨著奇次頻項(xiàng)數(shù)的增加,誤差逐漸減小??傮w運(yùn)算效率還是明顯提高。
關(guān)鍵詞:正交方波;正弦波;DFT;奇次倍諧波;誤差
The calculation method of using square wave
being an alternative to sine wave to practice DFT
Bao Kai Yun(Johnson Electric Group,SHENZHEN 518100)
Abstract:The calculation method of using square wave being an alternative to sine wave to practice DFT. So, we can do the Fourier transformation in a weak calculation ability embedding style system. In theory, there is no existence of errors in inverter. In actual practice, there are errors in square wave disintegration though. As the odd number multiples frequency item numbers has an increasing sequence, there will be fewer and fewer errors. All in all, the operation efficiency has enhanced significantly.
Key words:Middle cross square wave;sine wave;DFT;odd number multiples frequency item numbers;error
1 引言
傳統(tǒng)離散傅里葉變換(DFT)或線性調(diào)頻z變換(CZT)是以正弦波sin(x)作為核進(jìn)行傅里葉變換,當(dāng)計(jì)算時(shí)如果點(diǎn)數(shù)不確定,將無法預(yù)先計(jì)算并保存好固定點(diǎn)數(shù)的sin(x)值,所以在實(shí)時(shí)計(jì)算sin(x)時(shí)計(jì)算量都很大,這在一些嵌入式系統(tǒng)如8051,ARM內(nèi),由于沒有sin指令,計(jì)算sin值時(shí)需做多次乘法才能得出,幾乎無法實(shí)現(xiàn)稍長點(diǎn)數(shù)的DFT運(yùn)算。為此,本文專門提出用方波替代正弦波進(jìn)行離散傅里葉變換(DFT)的一種算法,以便能在一些計(jì)算能力不是很強(qiáng)的嵌入式系統(tǒng)內(nèi)作傅里葉變換,并對(duì)算法進(jìn)行編程以及驗(yàn)證。
2 用方波代替正弦波作離散傅里葉變換(DFT)的算法分析
2.1 算法的理論推導(dǎo)
:
至此,x(n)的離散傅里葉變換X(k)就變成了可以只用一對(duì)離散正交方波序列表達(dá)了。
2.2 算法推導(dǎo)結(jié)果的使用
式(4-1)和式(4-2)就是滿足耐奎斯特采樣定理下的采樣序列x(n)用方波代替正弦波作DFT變換的序列X(n)的實(shí)部和虛部,式中表明,某個(gè)諧波分量X(k)復(fù)數(shù)值,可以用同頻率的正交方波和奇次倍諧波分量復(fù)數(shù)值合成表示,式中不再有三角函數(shù)運(yùn)算,取而代之的是方波運(yùn)算,這使得運(yùn)算量大大簡單。
式(4-1)和式(4-2)中如k的3倍頻以上沒有諧波分量時(shí),即k在fs/6-fs/2區(qū)間內(nèi),式(4-1)和式(4-2)變?yōu)椋?/p>
式(4-1)和式(4-2)運(yùn)算分兩個(gè)部分,首先是計(jì)算x(n)與同頻率的正交方波乘積的和,即計(jì)算式(5-1)和式(5-2);然后,如果存在奇次倍諧波分量,需減去所用奇次倍諧波分量衰減值。所用,只需從高次諧波往低次諧波計(jì)算,就可完成式(4-1)和式(4-2)運(yùn)算。
由于方波序列E1(k)(n)、E2(k)(n)的值只有1和-1兩種可能,式(5-1)和式(5-2)其實(shí)只包含浮點(diǎn)數(shù)的加減運(yùn)算,而基本沒有浮點(diǎn)乘法運(yùn)算,此算法的優(yōu)勢就明顯體現(xiàn)出來了。
2.3 方波離散導(dǎo)致的運(yùn)算誤差分析
由以上推導(dǎo)過程可知,只要式(5-1)和式(5-2)運(yùn)算準(zhǔn)確,此算法本身不存在理論誤差。觀察式(5-1)和式(5-2),在x(n)不變的情況下,精確表達(dá)正交方波E1(k)(n)和E2(k)(n)的離散序列將變得尤為重要。
觀察式(1-1)和式(1-2)可知,方波可以看出是自身基頻以及一系列無限次奇次頻的正弦波合成,所以,對(duì)方波的離散總是存在誤差,即離散后的序列不能完整的還原連續(xù)的方波,但是隨著奇次頻項(xiàng)數(shù)的增加,誤差逐漸減小,當(dāng)取5次諧波合成后,均方差減小到0.07,這基本能滿足對(duì)方波的合成表達(dá)了,由采樣定理可知,5次諧波的最低采樣頻率是10倍基波頻,所用,對(duì)方波的采樣率應(yīng)是10倍基波頻以上時(shí),離散序列所表達(dá)的波形與原始波形均方差小于0.07,當(dāng)x(n)所包含的最高諧波頻率確定后,采樣頻率fs應(yīng)大于10倍最高諧波頻率,式(5-1)和式(5-2)的運(yùn)算理論與實(shí)際均方差小于0.07。
3 算法的程序和驗(yàn)證
對(duì)式(5-1)和式(5-2)用VC編程并生成DLL庫,以便用LabVIEW仿真驗(yàn)證。下圖所示是用LabVIEW對(duì)上述算法仿真的結(jié)果:fs=2000Hz,N=2000,f1=16Hz,f2=77Hz,f3=153Hz
4 總結(jié)
仿真結(jié)果顯示,實(shí)際誤差范圍落在理論分析誤差范圍內(nèi),仿真結(jié)果達(dá)到預(yù)期誤差范圍。雖然本算法與傳統(tǒng)DFT相比,采樣頻率有所提高,并存在一定誤差,但跟復(fù)雜的sin(x)值計(jì)算相比,浮點(diǎn)乘除運(yùn)算明顯減少,總體運(yùn)算效率還是明顯提高,這在嵌入式系統(tǒng)需做數(shù)字信號(hào)分析應(yīng)用領(lǐng)域還是有一定參考和實(shí)用價(jià)值。上述算法不只局限于DFT運(yùn)算,也適用于線性調(diào)頻z變換,快速相關(guān),數(shù)字檢波,等數(shù)字信號(hào)分析領(lǐng)域。
用上述編程方法做DFT運(yùn)算時(shí),由于存在大量重復(fù)運(yùn)算,并且重復(fù)規(guī)律跟普通DFT運(yùn)算重復(fù)一致,所用上述方法也可通過FFT運(yùn)算規(guī)則優(yōu)化,以提高運(yùn)算效率。
[參考文獻(xiàn)]
[1]程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社.2000.
[2]王寶祥.信號(hào)與系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2000.
[3]邱關(guān)源.電路[M].北京:高等教育出版社.2000.