首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >modem.oqpskmod -> modem.oqpskdemod不同的结果

modem.oqpskmod -> modem.oqpskdemod不同的结果
EN

Stack Overflow用户
提问于 2010-02-19 05:13:55
回答 1查看 246关注 0票数 0

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

代码语言:javascript
复制
   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列

代码语言:javascript
复制
 0     1     1     0     0     0     0     0     0     1     1     1     0

第14至26列

代码语言:javascript
复制
 1     1     1     1     0     1     1     1     0     0     0     1     1

第27至32列

代码语言:javascript
复制
 0     0     1     0     0     1

Z的值如下:

第1至13列

代码语言:javascript
复制
 3     0     1     1     0     0     0     0     0     0     1     1     1

第14至26列

代码语言:javascript
复制
 0     1     1     1     1     0     1     1     1     0     0     0     1

第27至32列

代码语言:javascript
复制
 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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-19 11:38:00

对我来说很难说,因为我没有安装通信工具箱,但我建议尝试使用文档中的示例中给出的更简单的输入。使用

代码语言:javascript
复制
tx = randint(10,1,8) 

例如。然后看看输出,而不仅仅是比较。差异是在机器精度上还是接近机器精度?你不用告诉我们打印出来的是什么(它们是否匹配?)试着看看tx和z之间的差异,是不是接近eps (我是2.2204e-016)?

数据传入和传出之间是否存在转换?告诉我们数据是怎么回事。

更新

我很高兴你发布了实际的输入和输出。它看起来像是z向右移动了一位(由于某种原因,开头有一个3),这意味着你失去了最后一位。看看Matlab documentation,有一张纸条上写着

OQPSK解调器具有1个符号延迟。

我想这就解释了这个问题。基本上,只需在调制器的输入末尾填充一个额外的0,从解调器的输出中去掉第一个元素,就可以开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2292235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档