當前位置:編程學習大全網 - 編程語言 - 求CDMA系統中多用戶檢測技術分析 帶算法仿真

求CDMA系統中多用戶檢測技術分析 帶算法仿真

基於MATLAB的全波傅氏算法仿真

何誌勤,樊江濤

(華東交通大學電氣與電子工程學院,江西南昌3300l3)

摘要:運用MATLAB對傳統全波傅氏算法和2種改進算法進行仿真,通過對3種算法頻譜圖的比較分析,說明2種改進傅氏算

法能夠有效濾掉故障電流中衰減的直流分量,從而獲得更為精確的基波和諧波的幅值.

關鍵詞:傅氏算法;衰減直流分量;MATLAB

中圖分類號:TM774 文獻標識碼:A

1 引言

任何壹種保護功能的實現都必須要有相應的算法來支

持.我們對算法性能優劣的評價也取決於該算法能否在較

短數據窗中從交流信號的若幹采樣值中獲得基波分量或者

某次諧波分量較為精確的估計值.傅氏算法是當今較常用

的算法,該算法具有很強的濾除諧波分量的能力,但缺點是

其本身不能濾除衰減的直流分量.為了克服信號中衰減的

非周期分量的影響,國內外很多學者作了大量的分析研究

工作,並提出了壹些相應的保護算法.本文利用MATLAB對

傳統全波傅氏算法和2種改進後的傅氏算法進行仿真,並對

仿真結果進行比較和探討.

2 傳統傅氏算法及其仿真

2.1 傳統傅氏算法的推導

我們以電流為例,設定故障電流波形為以下形式:

i(t)=/oe +

l~sin(kot+仇)

其中k為諧波次數,tot為基波的角頻率.設 :hsin

( ), =l~cos( )

則原式轉化為:

(I)=Ioe壹+ E[1~cos(b.ot)+I1 s1‘n( )]

運用全波傅氏算法,有:

{f = : (I)c06( )dt<br>b = J (I)siII( )dt<br>經過A/D(模擬量/數字量)變換采樣量化後,連續量變<br>為離散量,連續量求積變為離散量求和,從而有:<br>f = 2 r~ .c0sL 27r)式(1)<br>6 = 2三-siIl( )式(2)<br>上式中,Ⅳ為壹個周期 內的采樣點數;k是諧波次數;<br>n為離散的采樣點.<br>2.2 傳統傅氏算法的仿真<br>在用MATLAB進行仿真模擬時,要註意N數目的選擇,<br>這將對仿真效果產生影響.仿真程序的流程圖如圖r<br>/ 會蠹 墨壁 壁塑 _壹setp:1:<br>: : 婪 滏 l bit(ustteprtl壹y1=) 1:<br>實部和虛部廣—7擷出狽譖 w/<br>圖1 傳統傅氏算法程序流程圖<br>仿真程序的部分代碼如下:<br>% m ’<br>global step%運算步數<br>global bitbuttedly%每個蝴蝶結中所包含的點數<br>收稿日期:2005—05—25<br>作者簡介:何誌勤(1982壹),男,江西省九江市人,華東交通大學o3級碩士研究生,研究方向為電力系統及其自動化<br>l14 華東交通大學學報 2006正<br>global frequency%每步運算中蝴蝶結的個數<br>for step 1:5<br>for bitbutterfly=1:2^(step壹1)<br>i= ( (5壹step))*(bitbutterily壹1);RW =c0s(2 pi*<br>i/32);% W的實部<br>IW=(壹1)*sin(2 pi*i/32);% W的虛部<br>for frequency=1: (5壹step)<br>temp (frequency壹1)*(2"step)+bitbuttefiy;<br>TR =dataR(temp);TI=dataI(temp);<br>dataR(temp)=dataR(temp)+RW*dataR(temp+2 (step壹<br>1))壹IW*dataI(temp+2^(step壹1));<br>dataI(temp)=dataI(temp)+RW*dataI(temp+2 (step壹<br>1))+IW*dataR(temp+2~(step壹1));<br>tempi=dataR(temp+2~(step壹1));<br>dataR(temp+2^(step壹1))=TR壹(RW*dataR(temp+2<br>(step壹1))壹IW*datal(temp+2^(step壹1)));<br>dataI(temp+2 (step 壹1))=TI壹(RW *dataI(temp+2<br>(step壹1))+IW*temp1);<br>end<br>end<br>end<br>筆者選擇J7、r為32點,並選取兩組故障電流進行仿真,<br>從而比較非周期的衰減直流分量對運行結果的影響.最後<br>觀察的是每次諧波的幅值和真實值的差距,根據式(1)和式<br>(2),幅值即為:I (k)I=~/o + .<br>3 兩種改進後的傅氏算法及其仿真.<br>3.1 傳統傅氏算法的誤差來源<br>傳統傅氏算法的誤差主要來源於兩方面:1)用離散值累<br>加代替連續積分。其結果受到采樣頻率的影響.此外計算要<br>用到全部N個采樣值,因此,計算須在故障後第N個采樣值<br>出現時,才正確.在此之前,N個采樣值中有壹部分吻故障前<br>的數值,從而使結果不精確.2)傳統傅氏算法無法濾掉衰減<br>的直流分量.<br>3.2 濾除衰減直流分量的改進全波算法1<br>所謂改進就是在全波傅氏變換提取出基波或各次諧波<br>分量的基礎上。減去直流衰減分量帶來的誤差.我們將實部<br>和虛部的誤差設為也 貝lJ有:a t=~ +3 a<br>;設<br>=i(0)壹 (N),也就是說,在傳統傅氏算法的數據窗32個點<br>的基礎上再加壹個點,取第壹個點減去第J7、r+1個點.通過<br>計算,可得校正量:也=2/(1+ k K2), (0);甌=2kTr ;<br>其中K=, (0)/ .在交流采樣算法中,, (0)= Σ (n),<br>即采樣點數值之和與總采樣點數之商.將計算出來的 和<br>甌回帶入式(3)和式(4),計算a 和b .仿真程序的流程圖如<br>圖2:<br>圖2 改進算法1程序流程圖<br>仿真程序的部分代碼如下:<br>P 3;suln=0;<br>fori=1:32%計算I(O)<br>SHIn=x(j)+sum;<br>end<br>Y=sum/32;d=X(1+P)壹x(33 P);<br>z=y/d;%計算K<br>for k=1:32<br>ama(k)=0;dRta!(k)=0;<br>for n=1 p:32+P<br>am~(n)=x(n)*c0s(2 pi*n*k/32);ami(n)=x(n)<br>*(壹1)*sin(2*pi*n*k/32);<br>datarr(n)=2 y/(1+4 pi pi*k*k*( 2));%計算<br>實部誤差<br>dataii(n)=k*2 pi*z*datarr(k);%計算虛部誤差<br>dat~(k)=daaR(k)+d咖(n)壹d北lIr(n);d劃(k)=<br>dataI(k)+dmi(n)壹dataii(n);<br>end<br>end<br>程序中由P來控制起始采樣點的位置,通過對P的調<br>整,來測試其對運行結果的影響.結果說明P=3時的仿真效<br>果比較好.<br>3.3 濾除衰減直流分量的改進全波算法2<br>我們對輸入信號進行等間隔采樣.選取三個數據窗,時<br>間間隔為壹個采樣周期.可以得到:<br>』ak=IkCOSgk+3a. f。 =hcos(9k △ ) :<br>b :/ksing,+甌’ l b :/ksin( + u△£)+ ’<br>fl ~cos(gk+2koAt、)+ ~令:A: 壹 +k,bl,;B:<br>= Iksin(9k+2/~oAt)+ 壹?6?8 ‘<br>b 壹kcb +k,al,;C: 壹 + 6 ;D: 壹kcb +ksaj,;<br>進壹步得出: =<br>(kr—k )壹Ak<br>n 警 ;甌<br>壹<br>1+磚壹2 r’<br>其中:也= ( ); =c0s( );將計算出來的 和甌<br>第1期 何誌勤,等:基於MATI_AB的全波傅氏算法仿真 115<br>回帶入式(3)和式(4),計算 和 .仿真程序的流程圖如圖3.<br>仿真程序的部分代碼如下:<br>for n=(2+P):(33 P)% 取數據窗3<br>datar3(n)= (n)*cos(2 p * *k/32);da妊li3(11,)=<br>(n)*(壹1)*sin(2 *n*k/32);<br>3(k)=dataR3(k)+datar3(n);datal3(k)=datal3<br>(k)+datai3(n);<br>end<br>∞ =dataR1(k)壹dataR2(k);% 計算A<br>輸入模擬故障電流函數<br>對采樣點值構成的數組初始化<br>取第壹個數據窗,計算變換後實部和虛部<br>取第二個數據窗,計算變換後實部和虛部<br>取第三個數據窗,計算變換後實部和虛部<br>計算實部和虛部誤差<br>計算修正後的實部和虛部<br>輸出頻譜圖<br>圖3 改進算法2程序流程圖<br>bb=datall(k)壹datal2(k);% 計算<br>cc=dataR2(k)壹dataR3(k);% 計算C<br>dd=datal2(J})壹datal3(J});% 計算D

=n6s(cc)/(a/s(kc*∞ + *66));

k1=(拍*(kc*kt壹1)+∞ * *缸)/(1+ 2—2*

*kc);%虛部誤差

ks1=(∞ *(kc*kt壹1)壹66* * )/(1+ r2—2*

*k);%實部誤差

( )=dataR1(k)+ks1;datal(k)=datall(k)+

kc1;

end

筆者在編程時,對誤差計算做了修改,結果更佳.要註意

誤差和初值的加減問題,在算法2的程序中誤差是和初值相

加,在算法1中是相減,否則結果誤差會反而增大,此處不再

做深入分析.

4 傳統算法和改進算法的性能比較(Ⅳ統壹

取32)

4.1 含有較大的衰減直流分量

根據程序,我們取:

(t)=30e壹4o‘+3Osin(10D7c£+r./3)+6sin(200rrt+rt/4)+

15sin(30o £+rt/6)+5sin(400~t+rt/3)+1Osin(50D兀£+7r/4);

仿真結果如表1.

表1 含較大衰減值流分量仿真結果表

蠶壹叭

40

30

20

lO

0

圖4b 改進算法1仿真波形

圖4c 改進算法2仿真波形

改進算法2仿真波形

4.2 含有較小的衰減直流分量

根據程序,我們取:

(t)=8e壹20‘+30sin(100~t+rt/3)+6sin(200rrt+rt/4)+

15sin(300~t+rt/6)+5sin(40Orrt+rt/3)+10sin(500~t+rt/4);

仿真結果如下表2:

116 華東交通大學學報 2006正

表2 含較小衰減值流分■仿真結果表

計算後的仿真數值波形如圖5

0 0 02 0 04 0 06 0.∞ 01 0120.140 16 0.18 0 2

0 0.02 0.04 0 06 0.∞ 0 1 0.120 14 0 16 0.18 0.2

圖5b 改進算法1仿真波形

5 全波傅氏算法小結

全波富氏算法能濾除所有的整次諧波分量,且穩定性

好,但其數據窗較長,所以其響應速度較慢.通過上面的仿真

結果,我們可以得出以下結論:

1)對照同壹故障波形進行分析,可以看出:2種改進算

法所算結果都比較傳統傅氏算法要精確.

2)在故障波形諧波含量都相同的情況下,衰減直流分

量的初始值越小,衰減時間常數越大時,衰減非周期分量對

基波以及各次諧波的影響越小.

3)筆者將采樣點數Ⅳ從16提高到32後,3種算法誤差

均有壹定程度的減小.如果進壹步提高采樣率到64點/N或

128點/N時,對提高計算精度作用不大,而計算時間相應增

加.因此,將采樣點定為32點/周對減少誤差有益.

雖然改進算法總體要比傳統算法精確,但都還存在壹個

無法避免的計算誤差,那就是所取數據窗內的正常數據和故

障數據的分辨問題.為了全部使用故障後的采樣值,往往取

i≥N/2,i表示從故障起始時刻開始第i個采樣點.本文中

是通過對改進算法中P的調整,模擬故障發生後,起始采樣

點的位置.理論上如果有充足的判據是可以的,但無疑增加

了保護計算的時延和難度,而且跳過的半個周期采樣值不予

計算,這肯定會給故障時刻電流的計算帶來壹定的誤差.因

此,這個問題還有待進壹步的研究.

  • 上一篇:什麽是API函數AllocConsole和AttachConsole
  • 下一篇:Eclipse svn插件異常
  • copyright 2024編程學習大全網