我正在尝试模拟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 1Z的值如下:
第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'发布于 2010-02-19 11:38:00
对我来说很难说,因为我没有安装通信工具箱,但我建议尝试使用文档中的示例中给出的更简单的输入。使用
tx = randint(10,1,8) 例如。然后看看输出,而不仅仅是比较。差异是在机器精度上还是接近机器精度?你不用告诉我们打印出来的是什么(它们是否匹配?)试着看看tx和z之间的差异,是不是接近eps (我是2.2204e-016)?
数据传入和传出之间是否存在转换?告诉我们数据是怎么回事。
更新
我很高兴你发布了实际的输入和输出。它看起来像是z向右移动了一位(由于某种原因,开头有一个3),这意味着你失去了最后一位。看看Matlab documentation,有一张纸条上写着
OQPSK解调器具有1个符号延迟。
我想这就解释了这个问题。基本上,只需在调制器的输入末尾填充一个额外的0,从解调器的输出中去掉第一个元素,就可以开始工作了。
https://stackoverflow.com/questions/2292235
复制相似问题