comm.Rayleighchannel 等Matlab通信工具箱信道的信號接續問題

1、之前存在的問題

  • 之前作系統仿真時,把此類函數發到了信道對應的function裏面,這樣在不改變信道參數時,每次調用該信道對象都要初始化一次,導致前後兩幀數據不是連續發送。(可以通過info()方法查看該信道對象中NumSamplesProcessed參數來驗證,每次初始化該位置0)。

2、解決方法

  • 將該信道對象在主函數中以全局變量聲明(函數中若要使用全局變量需要聲明,但不需要賦值),然後在信道函數中使用該對象即可,這樣使用info方法查看該對象可以看到信道通過數據量一致增長,如果設置了多普勒可以看到對應信道頻域通帶連續變化。

3、示例

主函數設置

   global rayChan0;
    rayChan0 = comm.RayleighChannel(... 
    'SampleRate',sample_, ...                     %單個數   
    'PathDelays',delay_, ...                      %行向量
    'AveragePathGains',power_, ...                %行向量
    'NormalizePathGains',true, ...                %歸一化輸出
    'MaximumDopplerShift',dplshift_,...           %單個數
    'RandomStream', 'mt19937ar with seed',...     %'Global stream'  'mt19937ar with seed'  %'Global stream'不可設置seed
    'Seed',seed);                                 %單個數  取值(1->正無窮)                      
    %'Visualization','Frequency response','SamplesToDisplay','10%',... %信道實時頻域圖像(可選)

不同SNR可以使用reset方法重置信道爲初始位置,設置seed保種每一SNR初始信道特性相同

信道函數

global rayChan0;
[row,column] = size(rxDataGhostIn);
if (column == 1)
    rxDataGhostIn = rxDataGhostIn.';
end
[rxDataGhostOut0] = rayChan0(rxDataGhostIn.');    %輸入必須爲列向量
information=info(rayChan0);
fprintf('%d - ',information.NumSamplesProcessed);  %打印接續信息

R2016b之前版本需要使用step方法通過信道

使用persistent變量這裏未作驗證

本模塊存在的問題:多普勒設置爲0時,初始信道頻選特性與其它正數不一樣(無論10-13這樣的極小數或者10等數)

微信公衆號:通信隨筆XIDIAN

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章