Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在尝试模拟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,从解调器的输出中取出第一个元素,便可以开展业务。 更多&回答... |
![]() |
![]() |