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