我试图模拟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不包含相同的值eventhough我没有引入任何噪音了吗?谢谢!

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,从解调器的输出起飞的第一个元素,并且您是在事务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top