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

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xidian_hxc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值