Main Content

comm.BarkerCode

バイポーラ バーカー符号の生成

説明

comm.BarkerCode System object™ はバイポーラ バーカー符号を生成します。バーカー符号には、低自己相関特性があります。長さが短く低相関のサイドローブにより、バーカー符号はデジタル通信システムのフレーム同期で有用です。詳細については、バーカー符号を参照してください。

バーカー符号を生成するには、以下の手順に従います。

  1. comm.BarkerCode オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、オブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

barkerCode = comm.BarkerCode は、バーカー符号を生成するバイポーラ バーカー符号生成器 System object を作成します。

barkerCode = comm.BarkerCode(Name,Value) は、1 つ以上の名前と値のペアを使用してプロパティを設定します。たとえば、comm.BarkerCode('Length',11,'SamplesPerFrame','11') は、11 サンプルのフレーム内に長さ 11 のバーカー符号を出力するバイポーラ バーカー符号生成器 System object を構成します。各プロパティ名を引用符で囲みます。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

生成される符号の長さ。12345711、または 13 を指定します。詳細については、バーカー符号を参照してください。

例: 'Length',2 はバーカー符号 [–1;1] を出力します。

データ型: double

出力フレームあたりのサンプル数。正の整数として指定します。SamplesPerFrame が M の場合、オブジェクトは、長さ N のバーカー符号シーケンスで構成された M 個のサンプルを含むフレームを出力します。必要に応じて、オブジェクトは M 個のサンプルに達するように符号シーケンスを繰り返します。N は生成される符号の長さであり、Length プロパティで設定されます。

データ型: double

出力のデータ型。double または int8 を指定します。

データ型: char | string

使用法

R2016b より前のバージョンでは、関数 step を使用して System object アルゴリズムを実行します。step に対する引数は作成したオブジェクトであり、この節で示す引数が次に続きます。

たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

説明

y = barkerCode は、バーカー符号フレームを列ベクトルとして出力します。フレーム長がバーカー符号の長さを超える場合、オブジェクトはバーカー符号を繰り返してフレームを埋めます。

OutputDataType プロパティを使用して、出力データ型を設定します。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

cloneSystem object の複製
isLockedSystem object が使用中かどうかの判定
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

フレームあたりのサンプル数が 10 のバーカー符号 System object を作成します。

  barker = comm.BarkerCode('SamplesPerFrame',10)
barker = 
  comm.BarkerCode with properties:

             Length: 7
    SamplesPerFrame: 10
     OutputDataType: 'double'

長さ 7 の既定のバーカー符号シーケンスを使用して複数のフレームを生成します。符号はフレーム内でラップされ、次のフレームに続きます。

  for ii = 1:2
      seq = barker()
  end
seq = 10×1

    -1
    -1
    -1
     1
     1
    -1
     1
    -1
    -1
    -1

seq = 10×1

     1
     1
    -1
     1
    -1
    -1
    -1
     1
     1
    -1

各バーカー符号のピーク サイドローブ レベルを計算します。

CodeLength = [1 2 3 4 5 7 11 13]';
psl = zeros(length(CodeLength),1);
barker = comm.BarkerCode;
for ii=1:length(CodeLength)
    spf = CodeLength(ii);
    barker.Length = CodeLength(ii);
    barker.SamplesPerFrame = spf;
    seq = barker();
    sll_dB = 20*log10(abs(xcorr(seq)));
    psl(ii) = -(max(sll_dB));
    release(barker);
end
Sidelobe_dB = psl;
T = table(CodeLength,Sidelobe_dB)
T=8×2 table
    CodeLength    Sidelobe_dB
    __________    ___________

         1                0  
         2          -6.0206  
         3          -9.5424  
         4          -12.041  
         5          -13.979  
         7          -16.902  
        11          -20.828  
        13          -22.279  

詳細

すべて展開する

拡張機能

バージョン履歴

R2012a で導入