包開云
摘 要:用方波替代正弦波進(jìn)行離散傅里葉變換(DFT)的一種算法,以便能在一些計算能力不是很強(qiáng)的嵌入式系統(tǒng)內(nèi)作傅里葉變換。此算法本身不存在變換誤差。對方波的離散總是存在誤差,但是隨著奇次頻項數(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)計算時如果點數(shù)不確定,將無法預(yù)先計算并保存好固定點數(shù)的sin(x)值,所以在實時計算sin(x)時計算量都很大,這在一些嵌入式系統(tǒng)如8051,ARM內(nèi),由于沒有sin指令,計算sin值時需做多次乘法才能得出,幾乎無法實現(xiàn)稍長點數(shù)的DFT運(yùn)算。為此,本文專門提出用方波替代正弦波進(jìn)行離散傅里葉變換(DFT)的一種算法,以便能在一些計算能力不是很強(qiáng)的嵌入式系統(tǒng)內(nèi)作傅里葉變換,并對算法進(jìn)行編程以及驗證。
2 用方波代替正弦波作離散傅里葉變換(DFT)的算法分析
2.1 算法的理論推導(dǎo)
:
至此,x(n)的離散傅里葉變換X(k)就變成了可以只用一對離散正交方波序列表達(dá)了。
2.2 算法推導(dǎo)結(jié)果的使用
式(4-1)和式(4-2)就是滿足耐奎斯特采樣定理下的采樣序列x(n)用方波代替正弦波作DFT變換的序列X(n)的實部和虛部,式中表明,某個諧波分量X(k)復(fù)數(shù)值,可以用同頻率的正交方波和奇次倍諧波分量復(fù)數(shù)值合成表示,式中不再有三角函數(shù)運(yùn)算,取而代之的是方波運(yùn)算,這使得運(yùn)算量大大簡單。
式(4-1)和式(4-2)中如k的3倍頻以上沒有諧波分量時,即k在fs/6-fs/2區(qū)間內(nèi),式(4-1)和式(4-2)變?yōu)椋?/p>
式(4-1)和式(4-2)運(yùn)算分兩個部分,首先是計算x(n)與同頻率的正交方波乘積的和,即計算式(5-1)和式(5-2);然后,如果存在奇次倍諧波分量,需減去所用奇次倍諧波分量衰減值。所用,只需從高次諧波往低次諧波計算,就可完成式(4-1)和式(4-2)運(yùn)算。
由于方波序列E1(k)(n)、E2(k)(n)的值只有1和-1兩種可能,式(5-1)和式(5-2)其實只包含浮點數(shù)的加減運(yù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)可知,方波可以看出是自身基頻以及一系列無限次奇次頻的正弦波合成,所以,對方波的離散總是存在誤差,即離散后的序列不能完整的還原連續(xù)的方波,但是隨著奇次頻項數(shù)的增加,誤差逐漸減小,當(dāng)取5次諧波合成后,均方差減小到0.07,這基本能滿足對方波的合成表達(dá)了,由采樣定理可知,5次諧波的最低采樣頻率是10倍基波頻,所用,對方波的采樣率應(yīng)是10倍基波頻以上時,離散序列所表達(dá)的波形與原始波形均方差小于0.07,當(dāng)x(n)所包含的最高諧波頻率確定后,采樣頻率fs應(yīng)大于10倍最高諧波頻率,式(5-1)和式(5-2)的運(yùn)算理論與實際均方差小于0.07。
3 算法的程序和驗證
對式(5-1)和式(5-2)用VC編程并生成DLL庫,以便用LabVIEW仿真驗證。下圖所示是用LabVIEW對上述算法仿真的結(jié)果:fs=2000Hz,N=2000,f1=16Hz,f2=77Hz,f3=153Hz
4 總結(jié)
仿真結(jié)果顯示,實際誤差范圍落在理論分析誤差范圍內(nèi),仿真結(jié)果達(dá)到預(yù)期誤差范圍。雖然本算法與傳統(tǒng)DFT相比,采樣頻率有所提高,并存在一定誤差,但跟復(fù)雜的sin(x)值計算相比,浮點乘除運(yùn)算明顯減少,總體運(yùn)算效率還是明顯提高,這在嵌入式系統(tǒng)需做數(shù)字信號分析應(yīng)用領(lǐng)域還是有一定參考和實用價值。上述算法不只局限于DFT運(yùn)算,也適用于線性調(diào)頻z變換,快速相關(guān),數(shù)字檢波,等數(shù)字信號分析領(lǐng)域。
用上述編程方法做DFT運(yùn)算時,由于存在大量重復(fù)運(yùn)算,并且重復(fù)規(guī)律跟普通DFT運(yùn)算重復(fù)一致,所用上述方法也可通過FFT運(yùn)算規(guī)則優(yōu)化,以提高運(yùn)算效率。
[參考文獻(xiàn)]
[1]程佩青.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社.2000.
[2]王寶祥.信號與系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2000.
[3]邱關(guān)源.電路[M].北京:高等教育出版社.2000.