Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 modem.oqpskmod-> modem.oqpskdemod结果不一样

我正在尝试模拟IEEE 802.15.4 / ZigBEE PHY,...

chip_values = [ 1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0; 1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0; 0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0; 0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1; 0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1; 0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0; 1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1; 1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1; 1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1; 1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1; 0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1; 0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0; 0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0; 0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1; 1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0; 1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0]; tx = []; values = randsrc(1,1,[0:15]); for k=1:length(values) sym = values(k); tx = [tx chip_values((sym+1),1:end)]; end; tx = tx.'; h = modem.oqpskmod; y = modulate(h, tx); g = modem.oqpskdemod(h); z = demodulate(g, y); length(z) for k=1:length(tx) if(tx(k)~=z(k)) fprintf('%d %d\n',tx(k),z(k)); end; end; 我的问题是在这种简单情况下,即使我没有引入任何噪声,为什么我的tx和z也不包含相同的值?谢谢!

tx的值如下:

第1至13栏

0 1 1 0 0 0 0 0 0 1 1 1 0 第14至26列

1 1 1 1 0 1 1 1 0 0 0 1 1 第27至32栏

0 0 1 0 0 1 z的值如下:

第1至13栏

3 0 1 1 0 0 0 0 0 0 1 1 1 第14至26列

0 1 1 1 1 0 1 1 1 0 0 0 1 第27至32列

1 0 0 1 0 0 h = Type: 'OQPSK Modulator' M: 4 PhaseOffset: 0 Constellation: [1x4 double] SymbolOrder: 'Binary' SymbolMapping: [0 1 2 3] InputType: 'Integer' g = Type: 'OQPSK Demodulator' M: 4 PhaseOffset: 0 Constellation: [1x4 double] SymbolOrder: 'Binary' SymbolMapping: [0 1 2 3] OutputType: 'Integer' DecisionType: 'Hard decision'

回答:

由于我没有安装通信工具箱,因此很难告诉我,但我建议您使用文档示例中给出的更简单的输入来尝试进行此操作。使用

tx = randint(10,1,8) 例如。然后查看输出,而不只是比较。是机器精度还是接近机器精度?您不告诉我们打印什么(它们是否匹配?)。尝试计算tx和z之间的差异。它接近eps(对我来说是2.2204e-016)?

数据输入和数据输出之间是否有转换?告诉我们数据发生了什么。

更新资料

我很高兴您发布了实际的输入和输出。看起来z右移了一个(由于某种原因开头是3),这意味着您丢失了最后一位。查看Matlab文档 ,其中有一条说明
OQPSK解调器具有1个符号延迟。

我认为这可以解释问题。基本上,只需在调制器输入的末尾填充一个额外的0,从解调器的输出中取出第一个元素,便可以开展业务。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:13


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.