MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   modem.oqpskmod-> modem.oqpskdemod结果不一样 (https://www.labfans.com/bbs/showthread.php?t=23131)

poster 2019-12-10 20:30

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'

[B]回答:[/B]

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

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

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

[B]更新资料[/B]

我很高兴您发布了实际的输入和输出。看起来z右移了一个(由于某种原因开头是3),这意味着您丢失了最后一位。查看[URL="http://www.mathworks.com/access/helpdesk/help/toolbox/comm/ref/modem.oqpskdemod.html"]Matlab文档[/URL] ,其中有一条说明
[INDENT] OQPSK解调器具有1个符号延迟。

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



[url=https://stackoverflow.com/questions/2292235]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 05:12

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