0

IEEE 802.15.4 /ZigBEEPHYをシミュレートしようとしています...

   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'
4

1 に答える 1

0

通信ツールボックスがインストールされていないため、わかりにくいですが、ドキュメントの例に示されているように、より簡単な入力でこれを試すことをお勧めします。使用する

tx = randint(10,1,8) 

例えば。次に、単に比較するのではなく、結果を見てください。違いは機械の精度かそれに近いものですか? 何が印刷されているかはわかりません (一致しているかどうか)。tx と z の差をとってみてください。eps (私にとっては 2.2204e-016) に近いですか?

入ってくるデータと出てくるデータの間にシフトはありますか? データで何が起こっているか教えてください。

アップデート

実際の入力と出力を投稿していただければ幸いです。z が右に 1 つシフトされているように見えます (そして、何らかの理由で先頭に 3 があります)。これは、最後のビットを失うことを意味します。Matlabのドキュメントを見ると、次のようなメモがあります

OQPSK 復調器には 1 シンボル遅延があります。

それが問題を説明していると思います。基本的には、変調器への入力の最後に追加の 0 をパディングし、復調器の出力から最初の要素を取り除くだけで済みます。

于 2010-02-19T03:38:00.307 に答える