衰落信道知识
使用對(duì)象實(shí)現(xiàn)衰落信道
使用對(duì)象實(shí)現(xiàn)的多路徑傳播方案的基帶通道模型包括:
N離散衰落路徑, 每個(gè)都有自己的延遲和平均功率增益。一個(gè)信道,?N?= 1 稱為頻率平坦衰落通道。一個(gè)信道,?N?> 1 作為一個(gè)頻率選擇衰落信道?, 其信號(hào)具有足夠?qū)挼膸挕?/span>
每個(gè)路徑的瑞利或斯模型。
使用杰克斯多普勒頻譜的默認(rèn)通道路徑建模, 可以指定最大多普勒頻移。其他類型的多普勒頻譜允許 (相同或不同的所有路徑) 包括: 扁平, 限制杰克斯, 不對(duì)稱杰克斯, 高斯, 雙高斯, 圓形, 和鐘。
如果在通道對(duì)象的構(gòu)造過(guò)程中將最大多普勒頻移設(shè)置為0或省略, 則對(duì)象將信道建模為靜態(tài)。對(duì)于這種配置, 衰落不隨時(shí)間而變化, 并且所指定的多普勒頻譜對(duì)衰落過(guò)程沒(méi)有影響。
有關(guān)延遲和增益的典型值的一些附加信息在選擇實(shí)際信道屬性值.
使用塊實(shí)現(xiàn)衰落信道
信道塊庫(kù)包括可在移動(dòng)通信中模擬真實(shí)世界現(xiàn)象的 MIMO 和單輸入衰落塊。這些現(xiàn)象包括多徑散射效應(yīng), 以及發(fā)射機(jī)和接收機(jī)之間的相對(duì)運(yùn)動(dòng)引起的多普勒位移。
提示
要對(duì)衰落和加法白高斯噪聲的信道進(jìn)行建模, 請(qǐng)使用與 AWGN 信道塊串聯(lián)在一起的衰落信道塊, 其中衰落信道塊最先出現(xiàn)。
可以將 MIMO 信道和單輸出?衰落信道塊設(shè)置為模型的信道的瑞利或斯衰落分布。根據(jù)信號(hào)路徑的類型選擇要使用的衰落分布。
| 從發(fā)射機(jī)到接收機(jī)的直接視線路徑 | Rician |
| 從發(fā)射機(jī)到接收機(jī)的一個(gè)或多個(gè)主要反射路徑 | Rayleigh |
在多個(gè)主要反射路徑的情況下, 為瑞利衰落分布配置的衰落信道塊的單個(gè)實(shí)例可以同時(shí)對(duì)它們進(jìn)行建模。
為您的情況選擇適當(dāng)?shù)膲K參數(shù)是很重要的。有關(guān)更多信息, 請(qǐng)參見(jiàn)選擇實(shí)際信道屬性值, 以及?MIMO 衰落通道和單輸出衰落信道阻止參考頁(yè)。
可視化衰落信道
您可以使用通道可視化工具查看衰落信道的特征。有關(guān)更多信息, 請(qǐng)參見(jiàn)頻道可視化.
補(bǔ)償褪色響應(yīng)
涉及衰落信道的通信系統(tǒng)通常需要組件 (s) 來(lái)補(bǔ)償衰落響應(yīng)。彌補(bǔ)衰落的典型方法包括:
差分調(diào)制或單抽頭均衡器有助于補(bǔ)償頻率平坦衰落信道。有關(guān)實(shí)現(xiàn)差分調(diào)制的信息, 請(qǐng)參見(jiàn)?M-DPSK 調(diào)制器基帶塊引用頁(yè)。
帶有多個(gè)分路器的均衡器有助于補(bǔ)償頻率選擇性衰落信道。有關(guān)更多信息, 請(qǐng)參見(jiàn)均衡。
與自適應(yīng)均衡的通信鏈接示例說(shuō)明了為什么需要對(duì)衰落信道進(jìn)行補(bǔ)償。
單輸出多徑衰落信道的仿真方法
通信系統(tǒng)中的瑞利和斯多徑衰落信道模擬器 Toolbox?在[1]中使用 9.1. 3.5. 2 的帶限制的離散多路徑信道模型。此實(shí)現(xiàn)假定延遲電源配置文件和信道的多普勒頻譜是可分離的[1]。因此, 多徑衰落信道被建模為線性有限沖激響應(yīng) (FIR) 濾波器。讓{s我}表示輸入到通道的樣本集。然后樣品{y我}通道的輸出與{s我}通過(guò):
y我=n2?n=?n1s我?ngn
在{gn}是由以下值給定的分路權(quán)重集:
gn=k?k=1一個(gè)ksinc[τkts?n],??n1≤n≤n2
在上述方程式中:
ts為通道的輸入采樣周期。
{τk}, 在1≤k≤k, 是路徑延遲的集合。K是多路徑衰落信道中的路徑總數(shù)。
{一個(gè)k}, 在1≤k≤k, 是多徑衰落信道的復(fù)雜路徑增益集。這些路徑增益是相互不相關(guān)的。
n1和n2的選擇, 以便?gn?當(dāng)n小于?n1或大于n2.
兩種技術(shù), 過(guò)濾高斯噪聲和 sum-of-sinusoids, 被用來(lái)生成一組復(fù)雜的路徑增益,一個(gè)k.
每個(gè)路徑增益過(guò)程一個(gè)k由以下步驟生成:
濾波高斯噪聲技術(shù)
在離散時(shí)間內(nèi), 生成了具有零均值和單位方差的復(fù)雜不相關(guān) (白) 高斯過(guò)程。
用多普勒濾波器對(duì)復(fù)高斯過(guò)程進(jìn)行頻率響應(yīng)濾波h(f)=gs(f), 在s(f)表示所需的多普勒功率譜。
對(duì)濾波的復(fù)高斯過(guò)程進(jìn)行插值, 使其采樣周期與輸入信號(hào)相一致。使用線性和多相插值的組合。
Sum-of-sinusoids 技術(shù)
使用[2]中描述的方法生成相互不相關(guān)的瑞利衰落波形, 其中?i?= 1對(duì)應(yīng)于相分量,?i?= 2對(duì)應(yīng)于正交分量。
zk(t)μ(我)k(t)=μ(1)k(t)+jμ(2)k(t),?k=1,2,...,k=g2nknk?n=1因?yàn)?/span>(2πf(我)k,nt+θ(我)k,n),?我=1,2
在
nk指定用于對(duì)單個(gè)路徑建模的竇的數(shù)量。
f(我)k,n是離散多普勒頻率, 并計(jì)算在單個(gè)路徑中的每個(gè)正弦分量。
θ(我)k,n的階段是n屆成分的μ(我)k是一個(gè)分布的隨機(jī)變量, 在區(qū)間上具有均勻分布(0,2π].
t是淡入淡出的進(jìn)程時(shí)間。
當(dāng)建模一個(gè)杰克斯多普勒頻譜, 離散多普勒頻率,f(我)k,n, 最大移位f最大是由
f(我)k,n=f最大因?yàn)?/span>(α(我)k,n)=f最大因?yàn)?/span>[π2nk(n?12)+α(我)k,0]
在
α(我)k,0?(?1)我?1π4nk?kk+2,?我=1,?2??和??k=1,2,...,k
為了提前時(shí)間的衰落過(guò)程, 一個(gè)初始的時(shí)間參數(shù),t初始, 介紹了。衰落波形成為
μ(我)k(t)=g2nknk?n=1因?yàn)?/span>(2πf(我)k,n(t+t我n我t)+θ(我)k,n),?我=1,2
當(dāng)t初始= 0, 衰落過(guò)程從時(shí)間零開(kāi)始。的正值t初始在保持它的連續(xù)性的同時(shí), 推進(jìn)衰落過(guò)程相對(duì)于時(shí)間零。
使用 GMEDS 生成信道衰落樣本1?[2]算法。
計(jì)算復(fù)雜系數(shù)
由任一技術(shù)造成的復(fù)雜過(guò)程,zk, 進(jìn)行縮放以獲得正確的平均路徑增益。在瑞利信道的情況下, 衰落過(guò)程獲得如下:
一個(gè)k=gωkzk
在ωk=e[?一個(gè)k?2]
在斯通道的情況下, 衰落過(guò)程獲得如下:一個(gè)k=gωk[zkgk研發(fā),k+1+gk研發(fā),kk研發(fā),k+1ej(2πfd,我i/os,kt+θ我i/os,k)]
在k研發(fā),k是 k-th 路徑的斯 k 因子,fd,我i/os,k是 k 次路徑的視線分量的多普勒變換 (赫茲),θ我i/os,k是 k 次路徑的視線分量的初始相位 (在 rad 中)。在輸入到帶限制的多徑信道模型中, 傳輸?shù)姆?hào)必須由至少等于脈沖整形引入的帶寬擴(kuò)展因子的因子取樣。例如, 如果使用 sinc 脈沖整形, 其中脈沖形信號(hào)的帶寬等于符號(hào)速率, 則帶寬擴(kuò)展因子為 1, 在輸入到通道時(shí)需要至少一個(gè)每個(gè)符號(hào)的采樣。如果使用超過(guò)1的因數(shù)的凸起余弦 (RC) 濾波器, 其脈沖形狀信號(hào)的帶寬等于符號(hào)速率的兩倍, 則帶寬擴(kuò)展因子為 2, 在輸入到通道時(shí), 每個(gè)符號(hào)至少需要兩個(gè)樣本。
有關(guān)其他信息, 請(qǐng)參見(jiàn)文章基于?matlab 的面向?qū)ο蟮亩嗦窂剿ヂ湫诺婪抡娣椒?/span>, 位于 MATLABCentral。
引用
[1] Jeruchim,., 巴拉班, P., 并且 Shanmugan, k.s,通信系統(tǒng)的模仿, 再版, 紐約, Kluwer 學(xué)術(shù)或充滿, 2000。
[2] P?tzold, Matthias, 程湘王, 比 Olav Hogstand。"兩個(gè)新的基于 Sum-of-Sinusoids 的方法, 有效生成多不相關(guān)的瑞利衰落波形。無(wú)線通信的 IEEE 事務(wù)。Vol. 8, 數(shù)字 6, 2009, pp. 3122–3131。
指定衰落信道
通信系統(tǒng)工具箱將衰落信道建模為線性 FIR 濾波器。使用衰落通道篩選信號(hào)包括以下步驟:
創(chuàng)建一個(gè)用于描述要使用的信道的信道對(duì)象。信道對(duì)象是一種 MATLAB 變量, 它包含有關(guān)信道的信息, 如最大多普勒頻移。
調(diào)整通道對(duì)象的屬性 (如有必要), 以根據(jù)需要進(jìn)行定制。例如, 您可以更改路徑延遲或平均路徑增益。
使用調(diào)用對(duì)象將信道對(duì)象應(yīng)用于您的信號(hào)。
本節(jié)介紹如何定義、檢查和操作通道對(duì)象。這些主題是:
創(chuàng)建通道對(duì)象
復(fù)制和復(fù)制對(duì)象
顯示和更改對(duì)象屬性
通道對(duì)象屬性之間的關(guān)系
創(chuàng)建通道對(duì)象
選擇這些系統(tǒng)對(duì)象之一, 以創(chuàng)建適合您的建模情況的衰落通道對(duì)象。
comm.RayleighChannel | 瑞利衰落信道對(duì)象 | 一個(gè)或多個(gè)主要的反射路徑 |
comm.RicianChannel | 斯衰落信道對(duì)象 | 一個(gè)直接的視線路徑,可能與一個(gè)或多個(gè)主要的反射路徑結(jié)合 |
例如, 下面的命令創(chuàng)建一個(gè)信道對(duì)象, 它表示一個(gè)在 10萬(wàn) Hz 采樣的信號(hào)上作用的瑞利衰落信道。該通道的最大多普勒頻移是130赫茲。
rayChan1 = comm.RayleighChannel('SampleRate',1e5,...'MaximumDopplerShift',130); % Rayleigh fading channel object若要了解如何調(diào)用rayChan1淡入淡出通道對(duì)象以通過(guò)通道篩選傳輸?shù)男盘?hào), 請(qǐng)參閱使用衰落通道.
復(fù)制和復(fù)制對(duì)象
創(chuàng)建對(duì)象的另一種方法是復(fù)制現(xiàn)有對(duì)象, 然后根據(jù)需要調(diào)整新對(duì)象的屬性。如果這樣做, 則使用copy命令很重要, 如
rayChan2 = copy(rayChan1); % Copy rayChan1 to create an independent rayChan2.而不是rayChan2 = rayChan1。copy命令創(chuàng)建一個(gè)獨(dú)立于rayChan1的rayChan1副本。相比之下, 命令rayChan2 = rayChan1只創(chuàng)建rayChan2作為對(duì)rayChan1的引用, 因此rayChan1和rayChan2始終具有無(wú)法區(qū)分的內(nèi)容。
顯示和更改對(duì)象屬性
信道對(duì)象具有許多記錄有關(guān)信道模型的信息的屬性, 其中關(guān)于已篩選信號(hào)的信道的狀態(tài), 以及有關(guān)信道對(duì)未來(lái)信號(hào)的操作。
可以通過(guò)下列方式查看屬性:
若要查看通道對(duì)象的所有屬性, 請(qǐng)?jiān)诿畲翱谥休斎雽?duì)象的名稱。
若要查看信道對(duì)象的特定屬性或?qū)⒃搶傩缘闹蒂x給某個(gè)變量, 請(qǐng)輸入該對(duì)象的名稱, 后跟一個(gè)點(diǎn) (句點(diǎn)), 后跟該屬性的名稱。
可以通過(guò)以下方式更改信道對(duì)象的可寫(xiě)屬性:
若要更改信道對(duì)象屬性的默認(rèn)值, 請(qǐng)?jiān)趯?duì)象創(chuàng)建語(yǔ)法中輸入所需的值。
若要更改通道對(duì)象的可寫(xiě)屬性的值, 請(qǐng)發(fā)出在信道對(duì)象上使用點(diǎn)表示法的分配語(yǔ)句。更具體地說(shuō), 點(diǎn)表示法是指由對(duì)象名稱組成的表達(dá)式, 后跟一個(gè)點(diǎn), 后跟該屬性的名稱。
顯示瑞利通道對(duì)象屬性
在 MATLAB 中試用創(chuàng)建一個(gè)瑞利通道對(duì)象。顯示對(duì)象以顯示默認(rèn)情況下初始化的屬性以及在創(chuàng)建對(duì)象時(shí)指定的特性。輸入rayChan將顯示通道對(duì)象的所有屬性。在創(chuàng)建對(duì)象時(shí)分配了某些屬性值, 而其他屬性具有默認(rèn)值。有關(guān)特定信道屬性的詳細(xì)信息, 請(qǐng)參閱?comm.RayleighChannel?對(duì)象。
rayChan = comm.RayleighChannel('SampleRate',1e5,'MaximumDopplerShift',130); rayChan % View all the propertiesrayChan = comm.RayleighChannel with properties:SampleRate: 100000PathDelays: 0AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 130DopplerSpectrum: [1x1 struct]Show all propertiesg = rayChan.AveragePathGains % Retreive the AveragePathGains property of rayChang = 0調(diào)整斯通道對(duì)象屬性
在 MATLAB 中試用斯衰落信道對(duì)象具有一個(gè)不為瑞利衰落信道對(duì)象 (即標(biāo)量KFactor屬性) 顯示的附加屬性。有關(guān)斯通道屬性的詳細(xì)信息, 請(qǐng)參閱?comm.RicianChannel?對(duì)象。
更改斯通道對(duì)象屬性
創(chuàng)建斯通道對(duì)象。Visualization屬性的默認(rèn)設(shè)置為'Off'。將默認(rèn)設(shè)置更改為'Impulse response'會(huì)在調(diào)用對(duì)象時(shí)生成輸出信號(hào)的脈沖響應(yīng)圖。
ricChan= comm.RicianChannel; % Create object ricChan.Visualization = 'Impulse response' % Enables the impulse response channel visualizationricChan = comm.RicianChannel with properties:SampleRate: 1PathDelays: 0AveragePathGains: 0NormalizePathGains: trueKFactor: 3DirectPathDopplerShift: 0DirectPathInitialPhase: 0MaximumDopplerShift: 1.0000e-03DopplerSpectrum: [1x1 struct]Show all properties輸出顯示通道對(duì)象所有屬性的子集。選擇all properties可查看ricChan的完整屬性集.
通道對(duì)象屬性之間的關(guān)系
信道對(duì)象的某些屬性彼此相關(guān), 這樣, 當(dāng)一個(gè)屬性的值發(fā)生變化時(shí), 另一個(gè)屬性的值必須以某種相應(yīng)的方式更改, 以保持通道對(duì)象的一致性。例如, 如果更改PathDelays的向量長(zhǎng)度, 則AveragePathGains的值必須更改, 以便其向量長(zhǎng)度等于PathDelays的新值。這是因?yàn)閮蓚€(gè)向量的長(zhǎng)度等于信道的離散路徑數(shù)。有關(guān)鏈接屬性和示例的詳細(xì)信息, 請(qǐng)參見(jiàn)?comm.RayleighChannel?或?comm.RicianChannel?.
參考頁(yè)。
指定衰落信道的多普勒頻譜
信道對(duì)象的多普勒頻譜通過(guò)其DopplerSpectrum屬性指定。此屬性的值必須為:
多普勒物體。在這種情況下, 相同的多普勒頻譜適用于通道對(duì)象的每個(gè)路徑。
與PathDelays向量屬性長(zhǎng)度相同的多普勒對(duì)象的單元格數(shù)組。在這種情況下, 每個(gè)路徑的多普勒頻譜是由相應(yīng)的多普勒對(duì)象在矢量中給出的。
當(dāng) PathDelays 屬性的向量長(zhǎng)度增加時(shí), 通過(guò)附加杰克斯多普勒對(duì)象, DopplerSpectrum 的長(zhǎng)度自動(dòng)增加以匹配 PathDelays 的長(zhǎng)度。
如果 PathDelays 矢量屬性的長(zhǎng)度減小, 則通過(guò)刪除最后一個(gè)多普勒對(duì)象, DopplerSpectrum 的長(zhǎng)度會(huì)自動(dòng)減小以匹配 PathDelays 的長(zhǎng)度。
多普勒對(duì)象包含用于表征多普勒頻譜的所有屬性, 但最大多普勒頻移除外, 這是信道對(duì)象的一個(gè)特性。本節(jié)介紹如何創(chuàng)建和操作多普勒對(duì)象, 以及如何將它們分配給信道對(duì)象的DopplerSpectrum屬性。
創(chuàng)建多普勒對(duì)象
要?jiǎng)?chuàng)建多普勒對(duì)象, 請(qǐng)使用doppler函數(shù)。doppler函數(shù)的唯一用途是創(chuàng)建用于指定信道對(duì)象的DopplerSpectrum屬性值的多普勒對(duì)象。
如果將單個(gè)多普勒頻譜結(jié)構(gòu)分配給 DopplerSpectrum, 則所有路徑都具有相同的多普勒頻譜。如果 FadingTechnique 屬性是'Sum of sinusoids', 則 DopplerSpectrum 必須是doppler('Jakes');否則, 請(qǐng)從以下選項(xiàng)中進(jìn)行選擇:
doppler('Jakes')
doppler('Flat')
doppler('Rounded', ...)
doppler('Bell', ...)
doppler('Asymmetric Jakes', ...)
doppler('Restricted Jakes', ...)
doppler('Gaussian', ...)
doppler('BiGaussian', ...)
如果為不同的多普勒頻譜結(jié)構(gòu) (可以從上一列表中的任何一個(gè)) 中選擇一個(gè)行單元格數(shù)組, 則每個(gè)路徑都有由單元格數(shù)組中相應(yīng)結(jié)構(gòu)指定的多普勒頻譜 DopplerSpectrum。在這種情況下, DopplerSpectrum 的長(zhǎng)度必須等于PathDelays的長(zhǎng)度.
若要生成 C 代碼, 請(qǐng)將此屬性指定給單個(gè)多普勒頻譜結(jié)構(gòu)。
例如, 一個(gè)高斯譜與正常化 (由渠道的最大多普勒位移) 標(biāo)準(zhǔn)偏差 0.1, 可以被創(chuàng)造如下:
dopp1 = doppler('Gaussian',0.1);重復(fù)多普勒對(duì)象
與通道對(duì)象的情況一樣, 多普勒對(duì)象可以使用copy函數(shù)進(jìn)行復(fù)制。該命令:
dopp2 = copy(dopp1);創(chuàng)建具有與dopp1相同屬性的多普勒對(duì)象dopp2?。dopp1和dopp2分別是多普勒對(duì)象的單獨(dú)實(shí)例, 因?yàn)樾薷亩咧械囊粋€(gè)不會(huì)影響另一個(gè)。如果使用dopp1 = dopp2?, 則會(huì)導(dǎo)致dopp1和dopp2引用多普勒對(duì)象的同一實(shí)例, 因?yàn)樾薷娜魏我粋€(gè)都將導(dǎo)致對(duì)另一項(xiàng)的相同修改。
查看和更改多普勒對(duì)象屬性
在 MATLAB 中試用查看和更改多普勒對(duì)象屬性的語(yǔ)法與通道對(duì)象的大小寫(xiě)相同 (請(qǐng)參閱顯示和更改對(duì)象屬性).
創(chuàng)建、更改和查看多普勒對(duì)象
創(chuàng)建并顯示一個(gè)具有默認(rèn)屬性的圓角多普勒對(duì)象, 并修改其Polynomial屬性的第三個(gè)元素。
doppRound = doppler('Rounded')doppRound = struct with fields:SpectrumType: 'Rounded'Polynomial: [1 -1.7200 0.7850]調(diào)整多項(xiàng)式的第三系數(shù)。
doppRound.Polynomial(3) = 0.825doppRound = struct with fields:SpectrumType: 'Rounded'Polynomial: [1 -1.7200 0.8250]所有多普勒對(duì)象共有的屬性SpectrumType是只讀的。它在對(duì)象構(gòu)造中自動(dòng)指定, 無(wú)法修改。如果你想使用不同的多普勒頻譜類型, 你需要?jiǎng)?chuàng)建一個(gè)新的多普勒對(duì)象的期望類型。
在通道對(duì)象中使用多普勒對(duì)象
信道對(duì)象的DopplerSpectrum屬性可以通過(guò)向它分配多普勒對(duì)象或多普勒對(duì)象的向量來(lái)更改。
用平坦多普勒頻譜創(chuàng)建瑞利信道
在 MATLAB 中試用此示例闡釋如何將構(gòu)造的瑞利通道對(duì)象的默認(rèn)杰克斯多普勒頻譜更改為平面多普勒頻譜:
創(chuàng)建瑞利通道對(duì)象
將采樣速率設(shè)置為 9600 hz, 最大多普勒 shfit 為100赫茲。
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100)rayChan = comm.RayleighChannel with properties:SampleRate: 9600PathDelays: 0AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all propertiesrayChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Jakes'修改多普勒頻譜
創(chuàng)建平面多普勒對(duì)象并將其分配到rayChan對(duì)象中
doppFlat = doppler('Flat')doppFlat = struct with fields:SpectrumType: 'Flat'rayChan.DopplerSpectrum = doppFlatrayChan = comm.RayleighChannel with properties:SampleRate: 9600PathDelays: 0AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all propertiesrayChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Flat'利用高斯多普勒頻譜創(chuàng)建斯信道
在 MATLAB 中試用This example shows how to change the default Jakes Doppler spectrum of a constructed Rician channel object to a Gaussian Doppler spectrum with normalized standard deviation of 0.3, and subsequently display the DopplerSpectrum property, and change the value of the normalized standard deviation to 1.1:
Create a Rician channel object
Set the sample rate to 9600 Hz, the maximum Doppler shfit to 100 Hz, and K factor to 2.
ricChan = comm.RicianChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'KFactor',2)ricChan = comm.RicianChannel with properties:SampleRate: 9600PathDelays: 0AveragePathGains: 0NormalizePathGains: trueKFactor: 2DirectPathDopplerShift: 0DirectPathInitialPhase: 0MaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all propertiesricChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Jakes'Modify the Doppler spectrum
Create a Gaussian doppler object with normalized standard deviation of 0.3 and assign it in the?ricChan?object.
doppGaus = doppler('Gaussian',0.3)doppGaus = struct with fields:SpectrumType: 'Gaussian'NormalizedStandardDeviation: 0.3000ricChan.DopplerSpectrum = doppGausricChan = comm.RicianChannel with properties:SampleRate: 9600PathDelays: 0AveragePathGains: 0NormalizePathGains: trueKFactor: 2DirectPathDopplerShift: 0DirectPathInitialPhase: 0MaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all propertiesricChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Gaussian'NormalizedStandardDeviation: 0.3000ricChan.DopplerSpectrum.NormalizedStandardDeviation = 1.1; ricChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Gaussian'NormalizedStandardDeviation: 1.1000Create Rayleigh Channel Using Independent Doppler Spectrum
Try it in MATLABThis example illustrates how to change the default Jakes Doppler spectrum of a constructed three-path Rayleigh channel object to a cell array of different Doppler spectra, and then change the properties of the Doppler spectrum of the third path:
Create a Rayleigh channel object
Set the sample rate to 9600 Hz, the maximum Doppler shfit to 100 Hz, and specify path delays of?0,?1e-4, and?2.1e-4 seconds.
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'PathDelays',[0 1e-4 2.1e-4])rayChan = comm.RayleighChannel with properties:SampleRate: 9600PathDelays: [0 1.0000e-04 2.1000e-04]AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all propertiesrayChan.DopplerSpectrumans = struct with fields:SpectrumType: 'Jakes'Modify the Doppler spectrum
Specify the?DopplerSpectrum?property as a cell array with an independent Doppler spectrum for each path.
rayChan.DopplerSpectrum = {doppler('Flat') doppler('Flat') doppler('Rounded')}rayChan = comm.RayleighChannel with properties:SampleRate: 9600PathDelays: [0 1.0000e-04 2.1000e-04]AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: {[1x1 struct] [1x1 struct] [1x1 struct]}Show all propertiesrayChan.DopplerSpectrum{:}ans = struct with fields:SpectrumType: 'Flat'ans = struct with fields:SpectrumType: 'Flat'ans = struct with fields:SpectrumType: 'Rounded'Polynomial: [1 -1.7200 0.7850]Change the?Polynomial?property for the third path.
rayChan.DopplerSpectrum{3}.Polynomial = [1 -1.21 0.7]rayChan = comm.RayleighChannel with properties:SampleRate: 9600PathDelays: [0 1.0000e-04 2.1000e-04]AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: {[1x1 struct] [1x1 struct] [1x1 struct]}Show all propertiesrayChan.DopplerSpectrum{:}ans = struct with fields:SpectrumType: 'Flat'ans = struct with fields:SpectrumType: 'Flat'ans = struct with fields:SpectrumType: 'Rounded'Polynomial: [1 -1.2100 0.7000]Configure Channel Objects
Before you filter a signal using a channel object, make sure that the properties of the channel have suitable values for the situation you want to model. This section offers some guidelines to help you choose realistic values that are appropriate for your modeling needs. The topics are
Choose Realistic Channel Property Values
Configure Channel Objects Based on Simulation Needs
Store Channel State History
The syntaxes for viewing and changing values of properties of channel objects are described in?Specifying a Fading Channel.
Choose Realistic Channel Property Values
Here are some tips for choosing property values that describe realistic channels:
Path Delays
By convention, the first delay is typically set to zero. The first delay corresponds to the first arriving path.
For indoor environments, path delays after the first are typically between 1 ns and 100 ns (that is, between 1e-9 s and 1e-7 s).
For outdoor environments, path delays after the first are typically between 100 ns and 10 μs (that is, between 1e-7 s and 1e-5 s). Very large delays in this range might correspond, for example, to an area surrounded by mountains.
The ability of a signal to resolve discrete paths is related to its bandwidth. If the difference between the largest and smallest path delays is less than about 1% of the symbol period, then the signal experiences the channel as if it had only one discrete path.
平均路徑增益
通道對(duì)象中的平均路徑增益表示每個(gè)衰落路徑的平均功率增益。在實(shí)際中, 平均路徑增益值是一個(gè)大的負(fù) dB 值。但是, 計(jì)算機(jī)模型通常使用-20 db 和 0 db 之間的平均路徑增益。
平均路徑增益向量中的 dB 值通常呈線性衰減, 但具體的時(shí)延分布取決于傳播環(huán)境。
為了確保路徑的期望值為 1, 可以通過(guò)通道對(duì)象的NormalizePathGains屬性規(guī)范化路徑增益。
最大多普勒位移
一些無(wú)線應(yīng)用, 如標(biāo)準(zhǔn) GSM (全球移動(dòng)通信系統(tǒng)), 更喜歡在移動(dòng)速度方面指定多普勒變化。如果移動(dòng)速度為v?(米/秒), 那么最大多普勒頻移計(jì)算如下, 其中f是傳輸載波頻率赫茲和c是光速 (3e8 米/秒)。
fd=vfc
根據(jù)這個(gè)公式的速度的移動(dòng), 在高速公路上的移動(dòng)汽車(chē)的信號(hào)可能會(huì)經(jīng)歷最大多普勒位移約80赫茲, 而從一個(gè)移動(dòng)的行人的信號(hào)可能會(huì)經(jīng)歷一個(gè)最大的多普勒位移約4赫茲。這些數(shù)字假設(shè)一個(gè)傳輸載波頻率900兆赫。
0的最大多普勒位移對(duì)應(yīng)于來(lái)自瑞利或斯分布的靜態(tài)通道。
斯衰落信道的 k-因子
斯 K 因子指定了直接視距路徑的 specular-to-diffuse 功率的比值。比率是線性表達(dá)的, 而不是 dB。
對(duì)于斯衰落, K 因子通常介于1和10之間。
一個(gè) K 因子0對(duì)應(yīng)于瑞利衰落。
多普勒頻譜參數(shù)
有關(guān)參數(shù)及其意義的說(shuō)明, 請(qǐng)參見(jiàn)有關(guān)多普勒對(duì)象的doppler參考頁(yè)。
根據(jù)模擬需要配置通道對(duì)象
有關(guān)配置信道對(duì)象以自定義篩選過(guò)程的提示:
如果將數(shù)據(jù)分成一系列向量 (例如, 在循環(huán)中處理), 則可以多次調(diào)用該信道對(duì)象 (在循環(huán)中的每個(gè)迭代中)。在每次調(diào)用后更新和保存通道的狀態(tài)信息。通道輸出與數(shù)據(jù)的分區(qū)方式無(wú)關(guān) (向量長(zhǎng)度)。
如果希望通道輸出可重復(fù), 請(qǐng)為通道對(duì)象的RandomStream屬性選擇種子選項(xiàng)。若要重復(fù)輸出, 請(qǐng)調(diào)用reset對(duì)象函數(shù)以重置內(nèi)部篩選器和內(nèi)部隨機(jī)數(shù)生成器。
如果要對(duì)連續(xù)傳輸?shù)臄?shù)據(jù)進(jìn)行建模, 請(qǐng)將FadingTechnique屬性設(shè)置為'Sum of sinusoids'和InitialTimeSource屬性, 以便為通道對(duì)象'Input port'?。在調(diào)用對(duì)象時(shí), 指定每個(gè)數(shù)據(jù)向量/幀的開(kāi)始時(shí)間, 通過(guò)輸入來(lái)處理該通道。
如果要使衰落進(jìn)程正常化, 以便路徑的預(yù)期值為 1 (通道不貢獻(xiàn)額外的電源增益或損耗), 請(qǐng)將通道對(duì)象的NormalizePathGains屬性設(shè)置為true.
存儲(chǔ)通道狀態(tài)歷史記錄
默認(rèn)情況下, 通道對(duì)象的PathGains屬性存儲(chǔ)當(dāng)前的復(fù)雜路徑增益向量。
將信道的StoreHistory屬性設(shè)置為 true 將使其存儲(chǔ)最后一個(gè)n路徑增益向量, 其中n是通過(guò)通道處理的向量的長(zhǎng)度。下面的代碼闡釋此屬性
rayChan = comm.RayleighChannel('SampleRate',100000,'MaximumDopplerShift',130); % Rayleigh channel tx = randi([0 1],10,1); % Random bit stream hmod = comm.DBPSKModulator; % Create DBPSK Modulator dpskSig = step(hmod,tx); % Process data by calling the step method rayChan.StoreHistory = true; % Allow states to be stored y = filter(h, dpskSig); % Run signal through channel h.PathGains % Display the stored path gains data本示例生成類似于以下內(nèi)容的輸出:
-0.7601 - 1.1853i-0.7540 - 1.1822i-0.7480 - 1.1791i-0.7419 - 1.1759i-0.7358 - 1.1728i-0.7298 - 1.1696i-0.7237 - 1.1665i-0.7177 - 1.1634i-0.7115 - 1.1599i-0.7053 - 1.1565ians =0.0788 - 0.5305i最后一個(gè)元素是通道的當(dāng)前路徑增益。
將StoreHistory設(shè)置為 true 將大大降低信道的篩選器函數(shù)的執(zhí)行速度。
使用淡入淡出的通道
按照指定衰落通道中的說(shuō)明創(chuàng)建了通道對(duì)象后, 可以調(diào)用該對(duì)象通過(guò)信道傳遞信號(hào)。將信號(hào)作為輸入?yún)?shù)提供給通道對(duì)象。在篩選操作結(jié)束時(shí), 通道對(duì)象將保留其狀態(tài), 以便您可以通過(guò)調(diào)用 info 對(duì)象函數(shù)作為輸入?yún)?shù)來(lái)查找最終路徑增益或通道已處理的樣本總數(shù)。
有關(guān)演示基本語(yǔ)法和狀態(tài)保留的示例, 請(qǐng)參見(jiàn)褪色信號(hào)的電源.
要使通道的特征可視Visualization, 請(qǐng)將顯示屬性設(shè)置為'Impulse response'、'Frequency response'或'Doppler spectrum'。有關(guān)更多信息, 請(qǐng)參見(jiàn)頻道可視化.
可視化三路瑞利通道
在 MATLAB 中試用這個(gè)例子說(shuō)明了如何可視化信道的脈沖響應(yīng)。
創(chuàng)建通道對(duì)象
在創(chuàng)建通道對(duì)象時(shí), 使用名稱-值對(duì)設(shè)置Visualization屬性
為'Impulse response'.
rayChan = comm.RayleighChannel('SampleRate',100000,'MaximumDopplerShift',130,...'PathDelays',[0 1.5e-5 3.2e-5],'AveragePathGains',[0, -3, -3],...'Visualization','Impulse response');生成一個(gè)比特流并創(chuàng)建一個(gè)調(diào)制器對(duì)象。調(diào)制比特流并通過(guò)
通過(guò)調(diào)用信道對(duì)象, 通過(guò)信道調(diào)制 DBPSK 信號(hào)。
tx = randi([0 1],500,1); dbspkMod = comm.DBPSKModulator; dpskSig = dbspkMod(tx); y = rayChan(dpskSig);當(dāng)調(diào)用對(duì)象時(shí), 會(huì)繪制脈沖響應(yīng)。
rayChan = comm.RayleighChannel('SampleRate',10000,'MaximumDopplerShift',100); sig = j*ones(2000,1); % Signal out = rayChan(sig); % Pass signal through channel. rayChan % Display all properties of the channel object. rayChan = comm.RayleighChannel with properties:SampleRate: 10000PathDelays: 0AveragePathGains: 0NormalizePathGains: trueMaximumDopplerShift: 100DopplerSpectrum: [1x1 struct]Show all properties% Plot power of faded signal, versus sample number. plot(20*log10(abs(out)))
衰落條件下的 DBPSK 經(jīng)驗(yàn)與理論性能
在 MATLAB 中試用本示例創(chuàng)建一個(gè)頻率平坦的瑞利衰落信道對(duì)象, 并調(diào)用它來(lái)處理由單個(gè)矢量組成的 DBPSK 信號(hào)。對(duì)信噪比的不同值計(jì)算比特錯(cuò)誤率。衰落信道過(guò)濾器在 AWGN 之前應(yīng)用。這是在將淡入淡出與 AWGN 合并時(shí)使用的建議序列。
創(chuàng)建瑞利衰落信道、調(diào)制器和解調(diào)器對(duì)象
chan = comm.RayleighChannel('SampleRate',1e4,'MaximumDopplerShift',100);創(chuàng)建 DBPSK 調(diào)制器和解調(diào)對(duì)象, 其調(diào)制順序設(shè)置為2。生成 DBPSK 調(diào)制的數(shù)據(jù)并通過(guò)通道傳遞。
M = 2; % DBPSK modulation order tx = randi([0 M-1],50000,1); % Generate a random bit streammod = comm.DBPSKModulator; demod = comm.DBPSKDemodulator;dpskSig = mod(tx); fadedSig = chan(dpskSig); % Apply the channel effects創(chuàng)建一個(gè) AWGN 的通道對(duì)象和 ErrorRate 計(jì)算器系統(tǒng)對(duì)象。
awgnChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)'); errorCalc = comm.ErrorRate;計(jì)算信噪比的不同值的誤差率。
SNR = 0:2:20; % Range of SNR values, in dB. numSNR = length(SNR); berVec = zeros(3, numSNR); % Preallocate a vector for BER results for n = 1:numSNRawgnChan.SNR = SNR(n);rxSig = awgnChan(fadedSig); % Add Gaussian noiserx = demod(rxSig); % Demodulatereset(errorCalc)berVec(:,n) = errorCalc(tx,rx); % Compute error rate. end BER = berVec(1,:);計(jì)算理論性能結(jié)果, 進(jìn)行比較。
BERtheory = berfading(SNR,'dpsk',M,1);繪制誤碼率結(jié)果。
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*'); legend('Theoretical BER','Empirical BER'); xlabel('SNR (dB)'); ylabel('BER'); title('Binary DPSK over Rayleigh Fading Channel');使用通道過(guò)濾器延遲
在 MATLAB 中試用信道對(duì)象的 ChannelFilterDelay 屬性的值是信道輸出滯后于輸入的樣本數(shù)。如果直接比較輸入和輸出數(shù)據(jù)集, 則必須使用適當(dāng)?shù)慕財(cái)嗷蛱畛洳僮鱽?lái)考慮延遲。
該示例說(shuō)明了在計(jì)算位錯(cuò)誤率之前對(duì)延遲進(jìn)行解釋的方法。
創(chuàng)建 DBPSK 調(diào)制器和解調(diào)對(duì)象, 其調(diào)制順序設(shè)置為2。生成 DBPSK 調(diào)制的數(shù)據(jù)并通過(guò)通道傳遞。
bitRate = 50000; M = 2; % DQPSK modulation ordermod = comm.DBPSKModulator; demod = comm.DBPSKDemodulator;創(chuàng)建瑞利衰落信道對(duì)象。
rayChan = comm.RayleighChannel('SampleRate',bitRate,'MaximumDopplerShift',4,...'PathDelays',[0 0.5/bitRate],'AveragePathGains',[0 -10]); chInfo = info(rayChan); delay = chInfo.ChannelFilterDelay;生成隨機(jī)比特流數(shù)據(jù)。對(duì)數(shù)據(jù)進(jìn)行調(diào)制, 通過(guò)衰落信道傳遞, 并解調(diào)。
tx = randi([0 M-1],50000,1);dpskSig = mod(tx); fadedSig = rayChan(dpskSig); rx = demod(fadedSig);計(jì)算比特錯(cuò)誤率, 考慮到延遲。
errorCalc = comm.ErrorRate('ReceiveDelay', delay); berVec = step(errorCalc,tx,rx); ber = berVec(1)ber = 0.0152 num = berVec(2)num = 760總結(jié)
- 上一篇: 数字信号处理中各种频率关系
- 下一篇: FTP主动模式(passive)和被动模