【瑞利衰落信道】理论+模型+仿真
【瑞利衰落信道】理論+模型+仿真
- 引言
- 小尺度衰落理論
- 多徑時延擴展產生的衰落效應
- 平坦衰落
- 頻率選擇性衰落
- 多普勒擴展引起的衰落效應
- 快衰落
- 慢衰落
- 多徑衰落信道統計特性
- 瑞利衰落信道的一階統計特性
- 瑞利衰落信道的二階統計特性
- 電平通過率(LCR)
- 平均衰落持續時間(AFD)
- 多徑衰落信道模型建立
- 基于clarke模型的成型濾波器法
- 基于Jakes模型的正弦波疊加法
- 多徑衰落信道模型的仿真
- 基于clarke的成型濾波器法仿真
- 基于Jakes的正弦波疊加法仿真
- 體會與心得
- 代碼
引言
最近“無線通信”課程的仿真實驗,要求我們進行針對幾種常見的無線通信信道進行仿真實現。接下來,本文將從瑞利衰落信道的理論、相關模型出發,分析基于瑞利衰落信道的多徑衰落信道。
由于現在是大三,將來有志于升學,所以這些通信方面的知識算是地基了。在這里算是一個實驗心得筆記叭~
以下是我的一些分享。如有不正確的地方,還請指正。
小尺度衰落理論
在梳理瑞利信道的知識點之前,首先需要回顧一下基礎中的基礎——小尺度衰落。
在“無線通信”這門課中,比較難的就是這塊小尺度衰落。剛剛開課那幾天,老師每節課必提一嘴“小尺度衰落這一塊是比較難的”,“歷屆講到二維傅里葉變換的時候,一遍過去沒人能聽懂的!”——閑話少敘,那就進入理論梳理吧~
無線信道的小尺度衰弱特征可以分為三大類:
- 一類是由于多徑傳播導致短時間內幅度衰落;
- 一類是由于多徑的時延擴展引起時間色散導致的信道衰弱;
- 一類是由于多普勒擴展引起頻率色散導致的信道衰弱。
當發射信號通過無線信道傳播時,信號參數和信道時間色散與頻率色散參數之間的關系決定了發射信號所經歷的小尺度衰弱類型。
多徑時延擴展產生的衰落效應
多徑特性引起的時間色散,導致發送的信號產生平坦衰落或頻率選擇性衰落。
平坦衰落
如果移動無線信道帶寬大于發送信號的帶寬,且在帶寬范圍內有恒定增益及線性相位,則接收信號就會經歷平坦衰落過程。這種衰落是最常見的一種。在平坦衰落情況下,信道的多徑結構使發送信號的頻諧特性在接收機內仍能保持不變。然而,由于多徑導致信道增益的起伏,使接收信號的強度會隨著時間變化。平坦衰落信道的特性如圖所示。
在平坦衰落信道中,發送信號帶寬的倒數遠大于信道的多徑時延擴展,hb(t,τ)h_b (t,τ)hb?(t,τ)可近似認為無附加時延(即τ=0的單一δ函數)。平坦衰落信道即幅度變化信道,有時看成窄帶信道,這是由于信號帶寬比平坦衰落信道帶寬窄得多。典型的平坦衰落信道會引起深度衰落,因此在深度衰落期間需要增加20dB或30dB的發送功率,以獲得較低的比特誤碼率。
其中,確切來說,如果相干帶寬定義為頻率相關函數大于0.9 的某特定帶寬,則相干帶寬近似為
Bc=1/50στB_c=1/{50\sigma_{\tau}} Bc?=1/50στ?
如果將定義放寬至相關函數值大于0.5 ,則相干帶寬近似為:
Bc=1/5στB_c=1/{5\sigma_{\tau}} Bc?=1/5στ?
經歷平坦衰落的條件為Bs?BτB_s?B_τBs??Bτ?或Ts?στT_s?σ_τTs??στ?,近似估計時取Ts≥10στT_s≥10σ_τTs?≥10στ?。
頻率選擇性衰落
如果信道具有恒定增益和線性相位的帶寬范圍小于發送信號帶寬,則該信道特性會導致接收信號產生選擇性衰落。在這種情況下,信道沖激響應具有多徑時延擴展,其值大于發送信號波形帶寬的倒數。此時,接收信號中包含經歷了衰減和時延的發送信號波形的多徑波, 多徑信道引入的符號間干擾(ISI)明顯,因而,產生接收信號失真。頻率選擇性衰落信道的特性如圖所示。
頻率選擇性衰落信道的建模比平坦衰落信道的建模更困難,因為必須對每一個多徑信號建模,且必須把信道視作一個線性濾波器。為此要進行寬帶多徑測量,并在此基礎上進行建模。
通常頻率選擇性衰弱信道的判定條件為Bs>BτB_s>B_τBs?>Bτ?或Ts<στT_s<σ_τTs?<στ?,近似估計時取Ts<10στT_s<10σ_τTs?<10στ?。
多普勒擴展引起的衰落效應
快衰落
根據發送信號與信道變化快慢程度的比較,信道可分為快衰落信道和慢衰落信道。在快衰落信道中,信道沖激響應在符號周期內變化很快。即信道的相干時間比發送信號的信號周期短。由于多普勒擴展引起頻率色散(也稱為時間選擇性衰落),從而導致信號失真。從頻域可看出,信號失真隨發送信號帶寬的多普勒擴展的增加而加劇。因此,信號經歷快衰落的條件是:
Bd>WsB_d>W_s Bd?>Ws?(Δt)c<Ts(Δt)_c<T_s (Δt)c?<Ts?
其中BdB_dBd?為多普勒擴展,(Δt)c(Δt)_c(Δt)c?為信道相干時間,(Δt)c≈1/Bd(Δt)_c≈1/B_d(Δt)c?≈1/Bd? ,WsW_sWs?為信號帶寬,TsT_sTs?為信號周期,Ts=1/WsT_s=1/W_sTs?=1/Ws? 。
慢衰落
在慢衰落信道中,信道沖激響應變化率比發送的基帶信號S(t)變化率低得多,因此可假設在一個或若干個帶寬倒數間隔內,信道均為靜態信道。在頻域中,這意味著信道的多普勒擴展比基帶信號帶寬小的多。所以信號經歷慢衰落的條件是:
Bd?WsB_d?W_s Bd??Ws?(Δt)c?Ts(Δt)_c?T_s (Δt)c??Ts?
顯然,移動臺的速度(或信道路徑中物體的速度)及基帶信號發送速率,決定了信號是經歷快衰落還是慢衰落。
不同多徑參數與信號經歷的衰落類型之間的關系總結如圖。
前面的一些理論的由來,以及公式推演,可以具體看看Smith Gorden的《Wireless Communication》
多徑衰落信道統計特性
接下來,進入正題,我們的常見的衰落信道。接下來主要梳理的是瑞利衰落信道,因為萊斯信道只需要在瑞利信道的基礎上增加一個直流分量就行(僅從公式來分析)。
瑞利衰落信道的一階統計特性
當信道中不存在一個較強的直達徑時,其信號包絡服從是瑞利分布。
在移動無線信道中,Rayleigh分布是常見的用于描述平坦衰落信號或獨立多徑分量接收包絡統計時變特性的一種分布類型。眾所周知,兩個正交的噪聲信號之和的包絡服從Rayleigh分布。Rayleigh分布的概率密度函數(pdf)為:
其中,σσσ是包絡檢波之前所接收的電壓信號的rms值,σ2σ^2σ2是包絡檢波之前的接收信號包絡的時間平均功率。不超過某特定值R的接收信號的包絡由相應的累積積分(CDF)給出:
Rayleigh分布的平均值r_mean為:
Rayleigh分布的方差為σr2σ_r^2σr2?,它表示信號包絡的交流功率。表示為:
相位φ(t)φ(t)φ(t)服從均勻分布的,即:
瑞利衰落信道的二階統計特性
學習“概率論”時,我們便了解到往往一階統計特性無法較好(準確)的來平均評價一個隨機變量,當然隨機過程也一樣。
電平通過率(LCR)
電平通過率是指信道的幅度衰落電平在單位時間內以正斜率通過某規定電平R的次數的均值。每秒電平通過的數目為:
其中ρ\rhoρ
其中, r ?是r(t)對時間的導數(即斜率);p(R,r)p(R,r)p(R,r)是r=R處r與 r ? 的聯合密度函數;fmf_mfm?是最大多普勒頻移;ρ是特定電平R相對于衰落包絡的本地rms幅度進行歸一化后的值。信號包絡常常發生淺度衰落,偶爾也會發生深度衰落。
平均衰落持續時間(AFD)
平均衰落持續時間定義為接收信號低于某指定電平R的平均時間段的值,可以表示為:
由上式可知,AFD 與移動速率和載波頻率成反比。可以通過計算平均衰落持續時間來近似確定在一次衰落期間最可能丟失的比特數。
以上的一些公式都是一些隨機過程的一些數字特征,暫時有些不理解,其實沒什么事,在后續的一些實踐過程中,會慢慢的領會其中的含義。
所以看到現在有些灰心失意是正常噠,堅持看下去就是勝利呢;如果到現在感覺都沒什么難度的話,那證明你的基本功很扎實呢,建議可以加快進度看下面的一些模型哈~
多徑衰落信道模型建立
這里,我有查不少資料,有不少博主寫的挺到位的,可參考
信道衰落隨筆一,
瑞利信道:從原理到實現
小尺度平坦衰落信道中,由于移動體處于不斷的運動狀態,導致接收端接收到的是來自不同路徑的多徑信號。移動臺的速率將會導致每條多徑分量具有不同的多普勒頻移,同時假設移動臺接收的信號的入射角度在[ 0, 2π]間均勻分布。這樣就產生了具有特定環境下的多普勒功率譜密度特性。Clarke信道模型描述的小尺度平坦衰落信道中,移動臺接收信號具有基于散射方式的場強統計特性,這正符合市區移動通信環境不存在直射路徑的特點,其包絡統計特性服從瑞利分布,因此又稱為瑞利衰落信道模型。一般情況下,在 瑞利衰落的狀態下,多普勒功率譜具有Jakes 功率譜密度函數,即U型譜。
一般我們常見的衰落信道大多是基于多個不相干的高斯隨機過程/有色高斯隨機過程來構建。其中,瑞利信道和萊斯信道是由兩組有色高斯來組成。
一般產生有色高斯噪聲的方法有兩類:第一類方法是成形濾波器法;第二類是正弦波疊加法。
基于clarke模型的成型濾波器法
成形濾波器法是將高斯白噪聲輸入成形濾波器來產生指定形狀的多普勒功率譜,實部和虛部均是具有特定形狀多普勒功率譜的高斯色噪聲,因此包絡服從瑞利分布。
有許多種具有可變增益和時延的Rayleigh 衰落仿真器,可以用它們來產生頻率選擇性衰落效應,如下圖。
其中,下圖整個頻率選擇性衰落效應的框圖,可以理解成一個巨大的系統,該系統輸入信號會收到三個變量的影響,分別是多徑信號的相對時延擴展 以及各路徑的增益 和多普勒擴展 (描述移動臺的相對運動情況)。
基于Jakes模型的正弦波疊加法
正弦波疊加法利用確定性過程來模擬隨機過程。根據中心極限定理,多個不同頻率的正弦波疊加,幅度統計是服從高斯分布的。如果實部和虛部均用多個不同頻率的正弦波疊加,則實部虛部均分別服從高斯分布。又根據瑞利分布的定義,兩個高斯變量的平方和的根服從瑞利分布,因此包絡服從瑞利分布。該方法易于實現,占用資源少,但是產生的多普勒功率譜是由多個離散頻率點上的沖激構成的,并且相關性能不夠理想。正弦波疊加法有很多種產生各正弦波相位、幅度參數的方法,比如等面積法,等距離法,蒙特卡羅法等。
式中
相移θ(i,n)θ_(i,n)θ(?i,n)是[0,2π][0,2π][0,2π]內均勻分布的隨機變量;當Ni→∞N_i→∞Ni?→∞時,Δfi→0Δf_i→0Δfi?→0,這樣就使頻率成為連續分布的。
具體框圖如下圖
Jakes提出了基于正弦波疊加法的Jakes仿真模型。Jakes仿真模型是一種確定模型,產生的信號非廣義平穩且不具各態歷經性,其二階統計特性與Clarke參考模型也相差較大。Jakes仿真模型雖然對Clarke參考模型實現了簡化,降低了復雜度,提高了仿真效率,但卻引入了廣義非平穩性。其主要原因就在于Jakes對模型中的隨機相移進行了確定化,同時造成了隨機相移之間存在相關性。
下圖是基于Jakes模型的正弦波疊加法,在工程中利用較多。
以類似的方式,可以將以上的模型封裝為一個模塊,用于多徑衰落信道的模型建立。
多徑衰落信道模型的仿真
接下來進行仿真了,其實這個仿真真心畫了很久。一開始沒怎么搞懂原理,就開始亂看學長學姐的代碼,死磕了好久;后來意識到理論問題的時候,連忙去梳理這些知識,雖然距離仿真還是有一段距離,但是已經開始能搞懂大致的一些步驟,并且自己編寫了基于clarke的成型濾波器算法。這階段找了不少csdn的資料,也問了不少同學,都挺參差的。所以,不知不覺間,我就把以上的兩個模型都建立和仿真了一下。
基于clarke的成型濾波器法仿真
首先先來看看基于clarke的成型濾波器法。
設定采樣頻率和多普勒頻移擴展(這里主要是為了模擬一個時變的系統)。
這里構造了一個多普勒濾波器,不難發現復高斯噪聲已經呈現“碗”型。下圖更加明顯一點(將其頻域采樣點數與輸入信號統一化了)
然后,我們將以上的兩組信號,分別ifft變回時域信號,進行平方求和后開根,得到瑞利衰落信道時域信號。時域波形將其與rms歸一化后計算幅度增益,利用dB性質表示
繪制一節統計特性PDF,可能是因為點數不多,稍微有些畸變,整體服從瑞利分布趨勢
二階統計特性如下
可以發現這的電平通過率整體折半了,導致平均衰落時間是理論的兩倍,我查了幾次代碼,感覺都查不出來,雖然LCR乘以2后波形呈現的很好,但是我總感覺是錯的(理論支撐我寫代碼的,還是不能為了理論數據而造假,那就先放著等什么時候找到問題了,下面備注吧)
雖然這里的信道與往常的信道有些不同,這里的信道有些像我們通俗的乘性噪聲(相對的,加性高斯白噪聲,我們很熟悉,這是加性的,直接與信號相加就行),這里的信道需要與我們的輸入信號(發射的信號),進行相乘;也可以通俗的理解為對輸入信號的包絡進行了變化。
根據卷積定理,時域相乘,頻域卷積。所以我們需要知道產生的瑞利衰落信道的頻譜圖,這樣方便我們來后續分析。以下是功率密度譜
看到這個波形的時候,我整個人驚訝到了。這個和我想象的頻譜完全不同,怎么回事脈沖呢?不清楚你是不是和我有一樣的疑惑。因為當時我是先做的Jakes模型的,在Jakes模型中其呈現的是碗的形狀,而這里竟然是脈沖!
經過理論分析,我想這里是尤其合理性的。因為先前我們已經發現,這兩條的任意一條之路的頻譜都是碗的形狀(因為被濾波了)。經過時域平方,相當于頻域卷積,由于各頻譜模的平方和,這必然是相當大的,自然呈現出脈沖狀。
接下來,我們開始構建多徑信道。假設多徑個數為Num=50個,到來的每個信號的功率呈指數衰落,并且總功率和為1。我將多普勒頻移最大帶寬設置的較小,比如50Hz(假設其幾乎靜止),這樣可以保證慢衰落(忘記概念的uu可以往前翻翻)。設置輸入信號為一些cos信號的疊加(信號頻率需要高于相干帶寬118Hz)。
設置延時間隔(使相關帶寬Bc=1422Hz大于輸入信號之間的帶寬),設置信道在平坦衰落處。以下是頻域波形
平坦衰落的時域波形,基本沒什么變化,就是增益變了
增大延時間隔(使相關帶寬小于輸入信號之間的帶寬),設置信道在頻率選擇性衰落處。以下是頻域波形
頻率選擇性衰落時域波形明顯存在畸變
現在我們,保持平坦衰落,改變頻域色散參數——多普勒頻移最大帶寬fm,原先是設置在50Hz,呈現出慢衰落,這時的時域波形如下
現在來看看快衰落的情況。
可以發現這里有畸變,但是畸變的非常微小。這個疑惑算是縈繞了我很久。我的理解是,由于之前瑞利信道的產生,其頻譜的特性受多普勒頻移擴展fm的影響太小了,所以對時域波形也影響較小。這里的思考有可能有誤!(有大佬可以解答的話,希望得到您的指教)
基于Jakes的正弦波疊加法仿真
設定相同的參數,設置fm=50Hz。觀察概率密度分布
由于fm設置太小,所以產生的正弦波疊加的個數較少,所以呈現出的分布有些畸形
當將fm調大后,PDF的波形明顯更加逼近瑞利分布
此時的瑞利信道的PSD如下圖
其二階統計特性如下圖,發現基本吻合理論值的情況。平均衰落時間在ρ\rhoρ較大的時候有偏差,這主要原因可能是測試時間較短所引起。
接下來,設置類似參數,首先設置在慢衰落,設置fm=5Hz(近乎理解為靜止)。分析平坦衰落和頻選衰落。
以下是平坦衰落
時域波形如下
當在頻選衰落時
接下來,我設置在平坦衰落下,調節fm,呈現快衰落
此時時域波形明顯發生畸變。從這里看出該模型的快慢衰落方面優于Clarke模型。
體會與心得
以上是全部的本次實驗的仿真。
其實,還是有蠻多疑惑的地方的:
- 尤其是當快慢衰落與頻選衰落糾纏在一起的時候。對于平坦,何時可以視為平坦,以及何時可以認為是快衰落(雖然有相關帶寬和相干時間,但是對于代碼編寫者來說,無從得知其波形的正確性,只能憑借推理與想象了)
- 除此之外,就是頻率精度對問題的復雜度的影響。因為Clarke模型的頻譜近乎脈沖,所以影響較小;但是Jakes模型則會有影響,而且非常影響判斷——比如明明處于平坦,但是卻呈現出類似頻選的特性,如下圖
)
上圖分別是頻域和時域的圖,根據相關帶寬判斷,應該是慢衰落、平坦衰落,但是其頻譜卻非常的奇怪;根本來說,是Jakes的頻譜特性導致。
看到這里,如果你有什么想法或者建議的話,請在留言區留意,我們可以相互討論。
代碼
以下是主代碼部分
clc;close all;clear; %% 參數初始化 RayleighMode ='Jakes-Flat';%選擇仿真模式'Forming-Filter'/'Jakes-Flat' num = 50;%多徑數目 power = 0:1/(num-1):1; power = exp(-power);%各路徑接收的功率 power = power/sum(power); dt = 1e-6;%接收方采樣間隔 delay = 1e-6*(0:(num-1));%各路徑的附加時延 fsamp = 1/dt;%接收方采樣頻率 Last_time = 1e-1;%接收方信號采樣持續時間 t = 0:dt:Last_time-dt; n = length(t); D = fsamp/n;%功率譜譜線間隔 fdmax = 50;%單徑的多普勒擴展平移 tau = sum(power.*delay)/sum(power);%平均附加時延 tau2 = sum(power.*delay.^2)/sum(power); sigma_tau = sqrt(tau2-tau^2);%rms時延擴展 Bc_09 = 1/50/sigma_tau;%頻率相關函數為0.9時,相關帶寬 Bc_05 = 1/5/sigma_tau;%頻率相關函數為0.5時,相關帶寬 Tc_05 = 0.423/fdmax;%% 信號發生器 fs_limH = 3000;%有用信號基帶高截止頻率 fs_limL = 2500;%有用信號基帶低截止頻率 df = 10;%有用信號頻率譜線間隔 fs = fs_limL:df:fs_limH;%有用信號頻率 txSig = 0; for ii = 1:length(fs)txSig = cos(2*pi*fs(ii)*t)+txSig; end %txSig = square(2*pi*fs*t);%square信號 % txSig = [1,zeros(1,n-1)];%脈沖信號 % flim_low = 0; % flim_high = 100; % txSig = FreSquare(n,fsamp,flim_low,flim_high);%頻域矩形 % txSig = txSig.*sin(2*pi*fc*t);%sin信號% txSig = ones(1,n);%全1信道txSig = txSig';%% 基于平坦瑞利信道的多徑信號 output_signal=Frequency_selective_fading_Channel...(power,floor(delay/dt),txSig,fsamp,fdmax,RayleighMode);%% 輸入輸出信號繪圖 figure;hold on;box on;grid on subplot(3,1,1);plot(t,txSig,'linewidth',2);title("輸入信號"); subplot(3,2,5);plot(t,txSig,'linewidth',2);title("輸入信號(放大)");xlim([0.0045,0.0055]); subplot(3,1,2);plot(t,real(output_signal/(max(output_signal)-min(output_signal)))*2,'linewidth',2);title("頻率選擇性衰落后信號") subplot(3,2,6);plot(t,real(output_signal/(max(output_signal)-min(output_signal)))*2,'linewidth',2);title("頻率選擇性衰落后信號(放大)");xlim([0.0045,0.0055]); xlabel("時間/s");ylabel("幅度");%% 輸入輸出信號的PSD figure;box on;grid on;hold on;box on fdata = fftshift(fft(txSig)); k=floor(-(n-1)/2: (n-1)/2); D = fsamp/n; subplot(3,1,1);plot(k*D,abs(fdata).^2,'linewidth',2); xlim([-fs_limH*2,fs_limH*2]); title("輸入信號"); xlabel("頻率/Hz");ylabel("PSD"); subplot(3,2,5);plot(k*D,abs(fdata).^2,'linewidth',0.5); xlim([fs_limL*3/2-fs_limH/2,fs_limH*3/2-fs_limL/2]); title("輸入信號(正譜線)"); xlabel("頻率/Hz");ylabel("PSD");fout = fftshift(fft(output_signal)); k=floor(-(n-1)/2: (n-1)/2); D = fsamp/n; subplot(3,1,2);plot(k*D,abs(fout).^2,'linewidth',2); xlim([-fs_limH*2,fs_limH*2]); title("頻率選擇性衰落后信號"); xlabel("頻率/Hz");ylabel("PSD"); subplot(3,2,6);plot(k*D,abs(fout).^2,'linewidth',0.5); xlim([fs_limL*3/2-fs_limH/2,fs_limH*3/2-fs_limL/2]); title("頻率選擇性衰落后信號(正譜線)"); xlabel("頻率/Hz");ylabel("PSD");%% 繪制外包絡 output_signal_dB = 10*log10(output_signal/rms(output_signal)); figure;box on;grid on; subplot(2,1,1);plot(t,output_signal_dB); title("外包絡衰落情況") xlabel("Time/s");ylabel("Amplitude/dB"); subplot(2,1,2);plot(t,output_signal_dB);xlim([Last_time/2,Last_time/2+0.003]); title("外包絡衰落情況(x軸放大)") xlabel("Time/s");ylabel("Amplitude/dB");%% 二階統計特性(計算瑞利分布的電平通過率(LCR)和平均衰落持續時間(AFD)) R_rms = sqrt(sum(abs(output_signal).^2)/n); R_real = abs(output_signal)/R_rms; R = 0:0.10:2; rho = R; rho2 = rho.^2; N_R_theory = sqrt(2*pi)*fdmax*rho.*exp(-rho2); N_R_real = zeros(1,length(rho)); ave_tau_theory = (exp(rho2)-1)./rho/fdmax/sqrt(2*pi); ave_tau_real = zeros(1,length(rho)); for ii = 1:length(rho)for jj = 1:length(R_real)if(jj>=2)if((R_real(jj-1)<=R(ii))&&(R_real(jj)>=R(ii)))N_R_real(ii) = N_R_real(ii)+1;endendif(R_real(jj)<R(ii))ave_tau_real(ii) = ave_tau_real(ii)+1;endend end N_R_real = N_R_real/Last_time; ave_tau_real = ave_tau_real/n./N_R_real; figure; subplot(2,1,1);box on;hold on;grid on; plot(rho,N_R_theory,'bo-'); plot(rho,N_R_real,'r^-'); xlabel("\rho");ylabel("LCR"); legend("理論值","實際值"); subplot(2,1,2);box on;hold on;grid on; plot(rho,ave_tau_theory,'bo-'); plot(rho,ave_tau_real,'r^-'); xlabel("\rho");ylabel("AFD"); legend("理論值","實際值");下面的是主代碼中用到的一些函數
function output_signal=Frequency_selective_fading_Channel(power,delay,txSig,fsamp,fdmax,RayleighMode) %power PDP對應的power 單位W %delay PDP對應的delay 單位us 因此此處采樣頻率需為1MHZ %txSig 信道輸入信號 輸入為列向量 %fsamp 輸入信號的抽樣頻率 fs=fsamp; %本程序的抽樣頻率 txSig_len=length(txSig); ratio=ceil(fs/fsamp); %過采樣率 col=ratio*txSig_len; %仿真矩陣列數 row=length(delay); %仿真矩陣行數 txSig_sim=zeros(row,col);%輸入信號模擬 h_sim=zeros(row,col); %信道模擬 sigma0_2=1/2; %噪聲功率 T_interval=1/fs; %采樣時間間隔txSig_spread=ones(1,ratio).*txSig(1); for i=2:txSig_len txSig_spread=[txSig_spread,ones(1,ratio).*txSig(i)]; end txSig_sim=repmat(txSig_spread,row,1); switch(RayleighMode(1:2))case 'Ja'N0=500;%正弦波疊加數,一般大于50for ii = 1:rowh_sim(ii,:)=Rayleigh_Channel(fdmax,sigma0_2,N0,T_interval,1,col); %基于'Jakes-Flat'endcase 'Fo'for ii = 1:rowh_sim(ii,:)=Rayleigh_Channel1(fdmax,sigma0_2,T_interval,1,col); %基于'Forming-Filter'endotherwiseerror('Unknown Rayleigh Simulation Model in Frequency_selective_fading_Channel()'); end%% 對信號按照延遲進行移位 figure;hold on% 輸入信號和信道的PSD n = length(txSig); k=floor(-(n-1)/2: (n-1)/2); fdata = fftshift(fft(txSig)); D = fsamp/n; subplot(2,1,1);plot(k*D,abs(fdata).^2,'linewidth',2);D = fs/n; subplot(2,1,2);hold on; for i=1:row txSig_sim(i,:)=[zeros(1,delay(i)),txSig_sim(i,1:(end-delay(i)))]; %信號時延resul_mat(i,:) = txSig_sim(i,:).*h_sim(i,:)*power(i);fh = fftshift(fft(h_sim(i,:)));plot(k*D,abs(fh).^2,'linewidth',2); end xlabel("Frequency/Hz");ylabel("PSD"); % legend("輸入信號","瑞利信道")%%輸出信號 output_signal_spread=sum(resul_mat,1); %多徑疊加 index=(1:txSig_len)*ratio; %符號同步 output_signal=output_signal_spread(index);%下采樣 endfunction T_out=Rayleigh_Channel(fdmax,sigma_0_2,N0,T_interval,row,col) %fdmax=40; 指定多普勒擴展 %N0=25; 指定正弦波疊加的數目 %% 此模型基于《移動傳播環境》P215 jakes模型 以及P220模型的改進 %% 初始化各參數 t=T_interval.*[1:(row*col)]; %仿真時長與間隔 N=4*N0+2; %總的仿真點數 n=1:N0; wd =2*pi*fdmax; wn = wd.*cos(2*pi/N*n); beta_n=pi.*(n/(N0+1)); phase_n=2*pi*rand(1,N0); Tc=zeros(size(t)); Ts=zeros(size(t)); for i=1:N0 Tc = Tc+cos(beta_n(i))*cos(wn(i)*t+phase_n(i));Ts = Ts+sin(beta_n(i))*cos(wn(i)*t+phase_n(i)); end Tc = Tc*2+sqrt(2)*cos(wd*t); Ts = Ts*2; T_out=sqrt(sigma_0_2)*reshape((Tc+1j*Ts),row,col)/sqrt(2*N0+1); %% CDF/PDF % figure;box on; % ksdensity(abs(Tc+1*j*Ts));%PDF % xlabel("x");ylabel("PDF");%% PSD % n = length(T_out); % k=floor(-(n-1)/2: (n-1)/2); % fdata = fftshift(fft(T_out)); % fsamp = 1e6; % D = fsamp/n; % figure; % subplot(2,1,1);plot(k*D,abs(fdata).^2,'linewidth',2); % ylabel("PSD");xlabel("頻率");title("基于正弦波疊加的瑞利信道PSD") % subplot(2,1,2);plot(k*D,abs(fdata).^2,'linewidth',2);xlim([-2*fdmax,2*fdmax]) % ylabel("PSD");xlabel("頻率");title("基于正弦波疊加的瑞利信道PSD(x軸放大)") endfunction T_out=Rayleigh_Channel1(fdmax,sigma_0_2,T_interval,row,col) % clc;close all;clear; %% 測試參數初始化 % fm=10; %指定多普勒擴展Hz % N = 1000;%采樣點數 % sigma_0_2 = 1/2;%噪聲功率 % df = 2*fm/(N-1);%相鄰譜線頻率間隔Hz % dT = 1/df;%衰落波形的時間周期s % fs 采樣頻率%% 函數參數初始化 fm = fdmax;%多普勒頻移寬度-fm~fm N = row*col;%總采樣點數 dT = T_interval;%采樣時間間隔 fs = 1/dT;%采樣頻率 N0 = floor(fdmax/(fs/N));%fd范圍內的頻點數 f = fdmax*2*floor(-(N0-1)/2: (N0-1)/2)/N0; index = find(f==fm);%找到多普勒邊界值 f(index)=f(index)-(fs/N)/100;%避免無窮大的異常值 index = find(f==-fm);%找到多普勒邊界值 f(index)=f(index)+(fs/N)/100;%避免無窮大的異常值%% 復高斯噪聲發生器(從頻域產生) Sig1 = randn(1,floor(N0/2))+i*randn(1,floor(N0/2));%正頻域的復高斯變量 Sig2 = randn(1,floor(N0/2))+i*randn(1,floor(N0/2));%正頻域的復高斯變量 if(mod(N0,2)==1)%需要補零頻Sig1 = [conj(Sig1(end:-1:1)),0,Sig1];%正負頻域的復高斯變量(直流分量設為0)Sig2 = [conj(Sig2(end:-1:1)),0,Sig2];%正負頻域的復高斯變量(直流分量設為0) elseSig1 = [conj(Sig1(end:-1:1)),Sig1];%正負頻域的復高斯變量(直流分量設為0)Sig2 = [conj(Sig2(end:-1:1)),Sig2];%正負頻域的復高斯變量(直流分量設為0) end%% 基帶多普勒濾波器(-fm/2~fm/2之間) SF1 = Sig1.*sqrt(1.5/pi/fm./sqrt(1-(f/fm).^2)); SF2 = Sig2.*sqrt(1.5/pi/fm./sqrt(1-(f/fm).^2));% figure;box on;grid on;hold on; % set (gca,'unit','normalized','position',[0.1,0.3,0.8,0.4] ); % subplot(2,1,1);%stem(f,real(Sig1),'linewidth',2);title("復高斯線譜") % hold on;plot(f,sqrt(1.5/pi/(fm/2)./sqrt(1-(f/(fm/2)).^2))); % subplot(2,1,2);stem(f,abs(SF1),'linewidth',2);title("多普勒濾波后線譜")%% IFFT SF1_Shift = fftshift(SF1); SF1_Expand = [SF1_Shift(1:floor(N0/2)),zeros(1,N-N0),SF1_Shift(floor(N0/2)+1:end)]; SF2_Shift = fftshift(SF2); SF2_Expand = [SF2_Shift(1:floor(N0/2)),zeros(1,N-N0),SF2_Shift(floor(N0/2)+1:end)]; sf1 = ifft(SF1_Expand); sf2 = ifft(SF2_Expand)*exp(-1i*pi/2);%正交分量相移90度% figure; % k=floor(-(N-1)/2: (N-1)/2); % D = fs/N; % subplot(2,1,1);plot(k*D,abs(fftshift(SF1_Expand)),'linewidth',2);xlabel("頻率/Hz"); % title("經過多普勒濾波器后的譜線") % subplot(2,1,2);plot(k*D,abs(fftshift(SF1_Expand)),'linewidth',2);xlabel("頻率/Hz"); % xlim([-2*fm,2*fm]); % title("經過多普勒濾波器后的譜線(放大)")%% 瑞利仿真衰落信號 sf = sqrt(real(sf1).^2+real(sf2).^2); sf = sf*sqrt(sigma_0_2/mean(sf.*conj(sf)));%功率調節 % figure;box on % sf_dB = 10*log10(sf/rms(sf)); % plot([1:N]*dT,sf_dB);xlabel("時間/s");ylabel("歸一化增益/dB") % title("瑞利衰落包絡信號")%% CDF/PDF % figure;box on; % ksdensity(real(sf));%PDF % xlabel("x");ylabel("PDF");%% PSD % figure;box on;grid on;hold on;box on % fdata = fftshift(fft(sf)); % k=floor(-(N-1)/2: (N-1)/2); % D = fs/N; % subplot(2,1,1);plot(k*D,abs(fdata).^2,'linewidth',2);ylabel("PSD");xlabel("頻率/Hz");title("瑞利衰落信號PSD") % subplot(2,1,2);stem(k*D,abs(fdata).^2,'linewidth',2);ylabel("PSD");xlabel("頻率/Hz");title("瑞利衰落信號PSD(x軸放大)"); % xlim([-fs/N*5,fs/N*5]);%% row條信道 T_out=reshape(sf,row,col);總結
以上是生活随笔為你收集整理的【瑞利衰落信道】理论+模型+仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab基于瑞利信道,一种基于MAT
- 下一篇: c语言编译器代码及翻译,在线C语言编译器