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

在这里插入图片描述

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