李建平,王 坦,劉艷潔
(國家無線電監(jiān)測中心陜西監(jiān)測站,陜西 西安 712000)
電磁兼容性(EMC)是指設(shè)備或者系統(tǒng)在其電磁環(huán)境中符合要求運行并不對其環(huán)境中的任何設(shè)備產(chǎn)生無法忍受的電磁干擾的能力。國際電工委員會標(biāo)準(zhǔn)IEC對電磁兼容的定義是:系統(tǒng)或設(shè)備在所處的電磁環(huán)境中能正常工作,同時不對其他系統(tǒng)和設(shè)備造成干擾。EMC可以分為設(shè)備間的和系統(tǒng)間的。系統(tǒng)間的EMC分析主要是指兩種業(yè)務(wù)系統(tǒng)(如IMT系統(tǒng)和射電天文系統(tǒng))之間的兼容問題,研究的目標(biāo)是獲取兩種業(yè)務(wù)系統(tǒng)能夠共存的參數(shù)。作為無線電管理部門,日常工作涉及的EMC分析主要是指系統(tǒng)間的EMC分析,下文所涉及的EMC分析均指是的系統(tǒng)間的。
Matlab[1]是數(shù)值計算領(lǐng)域的主流工具,其提供了大量的數(shù)值計算模塊和豐富的數(shù)據(jù)顯示模式,便于用戶快速進(jìn)行算法研究和科學(xué)建模仿真,而且由于擁有友好的工作平臺和簡單易用的編程語言,因此很快成為EMC分析最常用工具。但是在實際工作中,常常會遇到比較復(fù)雜的EMC分析場景,這種場景的仿真計算量很大,在使用Matlab仿真時,程序的耗時特別長,極大地影響了EMC分析工作的效率。
為了解決上述問題,筆者分析了Matlab運行效率低的原因主要是由Matlab屬于解釋器語言的性質(zhì)造成的,這種性質(zhì)決定了Matlab語言自身運行效率不高。因此,筆者想到平時使用比較多的C++語言,該編程語言屬于編譯性語言,自身運行效率很高,是否可以將C++語言用于EMC分析以此來提高分析效率以及C++語言在EMC分析使用中是否會遇到新的問題,這是本文要討論的兩個主要內(nèi)容。
本文的主要思路是,以EMC分析中很重要的一個環(huán)節(jié),電波傳播損耗計算為切入點,用Matlab和C++分別仿真一個實際的傳播模型ITU-R P.2108,然后對比兩種實現(xiàn)方式在仿真效率上的區(qū)別以及C++在實現(xiàn)仿真過程中遇到的問題,最后做出總結(jié)。
ITU-R P.2108傳播模型[2]是國際電聯(lián)以建議書的形式推出的,基主要內(nèi)容介紹了30 MHz~100 GHz頻率范圍內(nèi)通過地物模型估算損耗的多種方法。地物指的是地球表面的各種物體,如建筑物或植被,而不是實際的地形。無線電發(fā)射機(jī)或者接收機(jī)終端周圍的地物會對整體傳播效果產(chǎn)生重大的影響,并且最靠近終端的地物對傳播效果的影響最大。建議書主要給出了兩種情況下的地物統(tǒng)計模型,一種是地面路徑的統(tǒng)計模型,另外一種是地空路徑的統(tǒng)計模型。下面對兩種模型進(jìn)行詳細(xì)介紹。
地面路徑統(tǒng)計模型的適用范圍為城市和郊區(qū)地物損耗建模,具體的參數(shù)和范圍如表1所示。
表1 地面路經(jīng)統(tǒng)計模型的輸入?yún)?shù)表
詳細(xì)的計算過程如下,對地面到地面的路徑,不超過p%位置的地物損耗由式(1)給出。
式中,d為總的路徑長度。
地空路徑統(tǒng)計模型使用的場景是,其中干擾路徑的一端在人造地物內(nèi),另一端為地面上的衛(wèi)星、飛機(jī)或其他平臺,具體的參數(shù)和范圍如表2所示。
表2 地空路經(jīng)統(tǒng)計模型的輸入?yún)?shù)表
詳細(xì)的計算過程如下,對地面到機(jī)載平臺或衛(wèi)星的路徑,不超過 位置的地物損耗由式(2)給出。
為了進(jìn)行兩種仿真方式效率的對比,筆者按照ITU-R P.2108傳播模型的特點設(shè)置了兩個場景分別進(jìn)行對比。
場景一:EMC分析案例的傳播方式為地面路徑,并且選擇ITU-R P.2108作為地物損耗的計算模型。頻率為4.5 GHz,位置百分比為50%,仿真中的距離d為一個可變參數(shù),仿真變化范圍為0.25~100 km,并且假設(shè)i為變化間隔,改變i就可以實現(xiàn)對1次仿真循環(huán)次數(shù)的變化。
場景二:EMC分析案例中的傳播方式為地空路徑,并且選擇P.2108作為地物損耗的計算模型。頻率為25 GHz,位置百分比為50%,仿真中的仰角θ為一個可變參數(shù),仿真變化范圍為0°~90°,并且假設(shè)j為變化間隔,改變j就可以實現(xiàn)對1次仿真循環(huán)次數(shù)的變化。
仿真實驗中采用的i5-4200的雙核處理器,內(nèi)存為8 GB,操作系統(tǒng)為Windows7,結(jié)果如表3和表4所示。
表3 場景一仿真計算結(jié)果表
表4 場景二仿真計算結(jié)果表
仿真結(jié)果分析:從場景一和場景二的仿真計算結(jié)果表可以看出,當(dāng)仿真循環(huán)次數(shù)不大時,Matlab和C++耗時差不多;隨著仿真循環(huán)次數(shù)的增加,耗時的差距越來越明顯,當(dāng)循環(huán)次數(shù)到100 000級別時,Matlab耗時差不多是C++耗時的3倍之多。因此,在仿真量較大時,C++語言能夠明顯提升EMC仿真效率,節(jié)省EMC仿真時間。
假設(shè),隨機(jī)變量X服從位置參數(shù) 、尺度參數(shù) 的概率分布,并且其概率密度函數(shù)為
則這個隨機(jī)變量就稱為正態(tài)隨機(jī)變量,正態(tài)隨機(jī)變量服從的分布就稱為正態(tài)分布,記作。
Q函數(shù)又稱為標(biāo)準(zhǔn)正態(tài)分布的右尾函數(shù)
因為
所以
問題轉(zhuǎn)化為求解標(biāo)準(zhǔn)正態(tài)分布函數(shù)的反函數(shù)。標(biāo)準(zhǔn)正態(tài)分布函數(shù)的反函數(shù)沒法用簡單的公式表示,因此工程上經(jīng)常采用有理近似的方法求解,下面介紹求解過程[4]。
step1:初始化常量兩個數(shù)值常量LOW,HIGH以及4個系數(shù)數(shù)組分別是數(shù)組a,b,c,d,p為輸入?yún)?shù),q,r定位為臨時變量;
step2:如果p<0或者p>1,返回錯誤,程序結(jié)束;否則進(jìn)入step3;
step3:如果p==0 返回-∞,程序結(jié)束;否則進(jìn)入step4;
step4:如果p==1 返回∞,程序結(jié)束;否則進(jìn)入step5;
step5:如果p step6:如果p>HIGH, q=sqrt(-2*log(1-p)),返回-(((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q +c[4]) * q + c[5]) /((((d[0] * q + d[1]) * q + d[2]) * q +d[3]) * q + 1),程序結(jié)束;否則進(jìn)入step7; step7:q=p-0.5,r=q*q,返回(((((a[0] * r + a[1]) * r+ a[2]) * r + a[3]) * r + a[4]) * r + a[5]) * q /(((((b[0] *r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1),程序結(jié)束。 上述step1~step7偽代碼詳細(xì)介紹了標(biāo)準(zhǔn)正態(tài)分布函數(shù)的反函數(shù)求解過程,進(jìn)而可以求解出函數(shù)。 本文通過采用Matlab和C++語言對I T U-R P.2108傳播模型兩種場景的模擬仿真實現(xiàn),統(tǒng)計對比不同仿真次數(shù)所用的時間,結(jié)果表明,C++語言在實現(xiàn)EMC仿真過程中確實能夠提高運行效率,節(jié)約仿真時間。 本文最后還介紹了C++在實現(xiàn)EMC仿真過程中遇到的難點問題以及解決方案,通過對C++仿真過程中問題的介紹可以看出,雖然C++語言運行效率比較高,但是由于自身的函數(shù)庫沒有Matlab完善,所以在仿真編程過程中開發(fā)效率不高,對于開發(fā)人員技術(shù)水平要求較高。所以,在日常的EMC仿真分析的場景中,應(yīng)該根據(jù)仿真場景的復(fù)雜程度和編程開發(fā)人員的技術(shù)水平選擇合適的仿真工具以提高仿真效率,節(jié)約仿真時間?!?/p>4 結(jié)束語