Main Content

comm.GoldSequence

シーケンスのセットからの Gold シーケンスの生成

説明

comm.GoldSequence System object™ は、シーケンスの有界集合から小さい周期的な相互相関特性をもつバイナリ シーケンスを生成します。詳細については、Gold シーケンスを参照してください。

シーケンスのセットから Gold シーケンスを生成するには、次のようにします。

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

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

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

作成

説明

goldseq = comm.GoldSequence は Gold シーケンス発生器 System object を作成します。このオブジェクトは、2 進数の疑似乱数の Gold シーケンスを生成します。

goldseq = comm.GoldSequence(Name,Value) は、名前と値からなる 1 つ以上の引数を使用してプロパティを設定します。各プロパティ名を引用符で囲みます。たとえば goldseq = comm.GoldSequence('Shift',1) は、開始点からの出力シーケンスの 1 サンプル オフセットを指定します。

プロパティ

すべて展開する

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

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

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

最初に優先される PN シーケンスの生成多項式。次のオプションのいずれかとして指定します。

  • 定数項が 1 の多項式の文字ベクトルまたは string スカラー。詳細については、Communications Toolbox での多項式の表現を参照してください。

  • バイナリ値行ベクトル。降べきの順に並べた多項式の係数を表します。このベクトルの長さは N+1 でなければなりません。ここで N は多項式の次数です。最初と最後のエントリは 1 でなければなりません。これは、次数 N の最初の項と、定数項 1 を示します。

  • 整数値の行ベクトル。降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなります。最後のエントリは 0 でなければなりません。これは定数項 1 を示します。

このプロパティが、最初に優先される PN シーケンス発生器のシフト レジスタに対するフィードバック接続を決定します。1 番目の生成多項式の次数は、SecondPolynomial プロパティで指定される 2 番目の生成多項式の次数と等しくなければなりません。詳細については、シーケンスの推奨ペアを参照してください。

例: 'z^8 + z^2 + 1'[1 0 0 0 0 0 1 0 1]、および [8 2 0] は同一の多項式 p(z) = z8 + z2 + 1 を表します。

データ型: double | char

シミュレーションが開始するときに最初に優先される PN シーケンス発生器のシフト レジスタに使用する初期条件。バイナリ値スカラーまたはバイナリ値ベクトルとして指定します。

  • このプロパティをスカラーに設定した場合、シフト レジスタのすべてのセルの初期値は、指定されたスカラー値です。

  • このプロパティをベクトルに設定した場合、ベクトルの各要素がシフト レジスタで対応するセルの初期値に対応します。ベクトルの長さは、FirstPolynomial プロパティで指定される生成多項式の次数と等しくなければなりません。

メモ

オブジェクトが非ゼロのシーケンスを生成するためには、最初または 2 番目に優先される PN シーケンス発生器の初期条件の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、シフト レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。

データ型: double

最初に優先される PN シーケンスの生成多項式。次のオプションのいずれかとして指定します。

  • 定数項が 1 の多項式の文字ベクトルまたは string スカラー。詳細については、Communications Toolbox での多項式の表現を参照してください。

  • バイナリ値行ベクトル。降べきの順に並べた多項式の係数を表します。このベクトルの長さは N+1 でなければなりません。ここで N は多項式の次数です。最初と最後のエントリは 1 でなければなりません。これは、次数 N の最初の項と、定数項 1 を示します。

  • 整数値の行ベクトル。降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなります。最後のエントリは 0 でなければなりません。これは定数項 1 を示します。

このプロパティが、2 番目に優先される PN シーケンス発生器のシフト レジスタに対するフィードバック接続を決定します。2 番目の生成多項式の次数は、FirstPolynomial プロパティで指定される 1 番目の生成多項式の次数と等しくなければなりません。詳細については、シーケンスの推奨ペアを参照してください。

データ型: double | char

2 番目に優先される PN シーケンス発生器のシフト レジスタに使用する初期条件のソース。次のいずれかの値として指定します。

  • 'Property'SecondInitialConditions プロパティを使用して PN シーケンス発生器の初期条件を指定します。

  • 'Input port'secondinitcond 入力引数を使用して PN シーケンス発生器の初期条件を指定します。

データ型: string | char

シミュレーションが開始するときに 2 番目に優先される PN シーケンス発生器のシフト レジスタに使用する初期条件。バイナリ値スカラーまたはバイナリ値ベクトルとして指定します。

  • このプロパティをスカラーに設定した場合、シフト レジスタのすべてのセルの初期値は、指定されたスカラー値です。

  • このプロパティをベクトルに設定した場合、ベクトルの各要素がシフト レジスタで対応するセルの初期値に対応します。ベクトルの長さは、SecondPolynomial プロパティで指定される生成多項式の次数と等しくなければなりません。

メモ

オブジェクトが非ゼロのシーケンスを生成するためには、最初または 2 番目に優先される PN シーケンス発生器の初期条件の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、シフト レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。

依存関係

このプロパティを有効にするには、SecondInitialConditionsSource プロパティを 'Property' に設定します。

データ型: double

一連の Gold シーケンスからの出力シーケンスのシーケンス インデックス。範囲 [–2, 2n–2] の整数として指定します。n は推奨多項式の次数です。詳細については、シーケンス インデックスGold シーケンスを参照してください。

データ型: double

開始点からの出力シーケンスのオフセット。整数として指定します。単位はサンプルです。オブジェクトは、負または Gold シーケンスの長さより大きいシフト値をラップします。シフトの使用例については、さまざまなシフト値をもつ Gold シーケンスの生成を参照してください。

メモ

マスク ベクトルを計算するには、関数shift2maskを使用します。

データ型: double

可変サイズの出力を有効にする。数値または logical 0 (false) または 1 (true) として指定します。outputsize 入力引数を使用して可変サイズの出力を有効にするには、このプロパティを true に設定します。有効になった入力により、Gold シーケンスの出力サイズが指定されます。入力値は、MaximumOutputSize プロパティの値以下でなければなりません。

このプロパティを false に設定すると、SamplesPerFrame プロパティで出力サンプルの数が指定されます。

データ型: logical | double

最大出力フレーム サイズ。[m 1] 形式のベクトルとして指定します。ここで、m は正の整数です。ベクトルの最初の要素は出力フレームの最大長を示し、ベクトルの 2 番目の要素は 1 でなければなりません。

例: [20 1] は、最大フレーム出力サイズを 201 列として指定します。

依存関係

このプロパティを有効にするには、VariableSizeOutput プロパティを true に設定します。

データ型: double

フレームごとのサンプル出力数。正の整数で指定します。このプロパティを M の値に設定した場合、オブジェクトは周期が N = 2n – 1 の Gold シーケンスの M サンプルを出力します。n は、FirstPolynomial プロパティと SecondPolynomial プロパティで指定される生成多項式の次数です。

依存関係

このプロパティを有効にするには、VariableSizeOutput プロパティを false に設定します。

データ型: double

発生器リセット入力を有効にする。数値または logical 0 (false) または 1 (true) として指定します。resetseq 入力引数を使用してシーケンス発生器をリセットできるようにするには、このプロパティを true に設定します。この入力で、Gold シーケンス発生器の 2 つのシフト レジスタの状態が FirstInitialConditions プロパティと SecondInitialConditions プロパティで指定された初期条件にリセットされます。resetseq 入力の使用例については、さまざまなリセット値をもつ Gold シーケンスの生成を参照してください。

依存関係

このプロパティを有効にするには、SecondInitialConditionsSource プロパティを 'Property' に設定します。

データ型: logical | double

出力のデータ型。'double''logical''Smallest unsigned integer' または 'Smallest integer' として指定します。

Smallest unsigned integer オプションを使用するには、Fixed-Point Designer™ 製品が必要です。

データ型: string | char

使用法

説明

outSequence = goldseq() は、構成されているオブジェクトに基づいて列ベクトルに Gold シーケンスのフレームを出力します。

outSequence = goldseq(secondinitcond) は、2 番目の PN シーケンスの初期条件として secondinitcond を使用します。

この構文を有効にするには、SecondInitialConditionsSource プロパティを 'Input port' に設定し、ResetInputPort プロパティを false に設定します。

outSequence = goldseq(outputsize) では outputsize が出力サイズとして使用されます。

この構文を有効にするには、VariableSizeOutput プロパティを true に設定します。

outSequence = goldseq(resetseq) では resetseq がリセット信号として使用されます。

この構文を有効にするには、ResetInputPort プロパティを true に設定し、SecondInitialConditionsSource プロパティを 'Property' に設定します。

outSequence = goldseq(secondinitcond,outputsize) は、2 番目の PN シーケンスの初期条件と出力サイズの入力を指定します。

この構文を有効にするには、SecondInitialConditionsSource プロパティを 'Input port' に、ResetInputPort プロパティを false に、VariableSizeOutput プロパティを true に設定します。

outSequence = goldseq(outputsize,resetseq) は、出力サイズとリセット信号の入力を指定します。

この構文を有効にするには、VariableSizeOutput プロパティを true に、SecondInitialConditionsSource プロパティを 'Property' に、ResetInputPort プロパティを true に設定します。

入力引数

すべて展開する

シミュレーションが開始するときに 2 番目に優先される PN シーケンス発生器のシフト レジスタに使用する初期条件。バイナリ値スカラーまたはバイナリ値ベクトルとして指定します。

  • この入力をスカラーに設定した場合、シフト レジスタのすべてのセルの初期値は、指定されたスカラー値です。

  • この入力をベクトルに設定した場合、ベクトルの各要素がシフト レジスタで対応するセルの初期値に対応します。ベクトルの長さは、SecondPolynomial プロパティで指定される生成多項式の次数と等しくなければなりません。

メモ

オブジェクトが非ゼロのシーケンスを生成するためには、最初または 2 番目に優先される PN シーケンス発生器の初期条件の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、シフト レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。

依存関係

この入力引数を有効にするには、SecondInitialConditionsSource プロパティを 'Input port' に設定します。

データ型: double

出力シーケンスの長さ。非負の整数、n、または [n 1] 形式のベクトルとして指定します。ここで、n は正の整数です。ベクトルの最初の要素は出力フレームの長さを示し、ベクトルの 2 番目の要素は 1 でなければなりません。

スカラーまたは行ベクトルの最初の要素は、MaximumOutputSize プロパティ値の最初の要素以下でなければなりません。

依存関係

この入力引数を有効にするには、VariableSizeOutput プロパティを true に設定します。

データ型: double

シーケンス発生器のリセット。スカラーまたは、SamplesPerFrame プロパティに指定されたフレームあたりのサンプル数に等しい長さの列ベクトルとして指定します。

  • この入力を非ゼロのスカラーとして指定すると、オブジェクトは、指定される初期条件にリセットされ、その後新しい出力フレームを生成します。

  • この入力を列ベクトルとして指定すると、リセット ベクトルの非ゼロの値と一致する出力フレームのサンプルごとに、オブジェクトは指定される初期条件にリセットされます。

リセットの使用例については、さまざまなリセット値をもつ Gold シーケンスの生成を参照してください。

依存関係

この入力引数を有効にするには、ResetInputPort プロパティを true に設定します。

データ型: double | logical

出力引数

すべて展開する

Gold シーケンス。列ベクトルとして返されます。詳細については、Gold シーケンスを参照してください。

オブジェクト関数

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

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

周期が 25-1 である Gold シーケンスを 10 サンプル生成します。

goldseq = comm.GoldSequence('FirstPolynomial','x^5+x^2+1', ...
    'SecondPolynomial','x^5+x^4+x^3+x^2+1', ...
    'FirstInitialConditions',[0 0 0 0 1], ...
    'SecondInitialConditions',[0 0 0 0 1], ...
    'Index',4,'SamplesPerFrame',10);
x = goldseq()
x = 10×1

     1
     1
     1
     0
     0
     0
     0
     0
     0
     1

シフト入力にさまざまな値を使用して Gold シーケンスを生成し、オブジェクトが負またはシーケンス長より大きいシフト値をラップすることを示します。

フレームあたりのサンプル数を 15 に指定したシフトなしの Gold シーケンス System object™ を作成します。7 サンプルの Gold シーケンスを生成します。出力フレームは Gold シーケンスの先頭から始まります。

goldseq = comm.GoldSequence( ...
    "FirstPolynomial","x^3+x^2+1", ...
    "SecondPolynomial","x^3+x+1", ...
    "FirstInitialConditions",[0 0 1], ...
    "SecondInitialConditions",[0 1 1], ...
    "Index",3, ...
    "SamplesPerFrame",15)
goldseq = 
  comm.GoldSequence with properties:

                  FirstPolynomial: "x^3+x^2+1"
           FirstInitialConditions: [0 0 1]
                 SecondPolynomial: "x^3+x+1"
    SecondInitialConditionsSource: 'Property'
          SecondInitialConditions: [0 1 1]
                            Index: 3
                            Shift: 0
               VariableSizeOutput: false
                  SamplesPerFrame: 15
                   ResetInputPort: false
                   OutputDataType: 'double'

outseq = goldseq()'
outseq = 1×15

     1     1     0     0     0     0     0     1     1     0     0     0     0     0     1

オブジェクトを解放し、シフトを -1 に調整して、シフトした出力を生成します。シフト値 6 と 13 に対してこのプロセスを繰り返します。これらの各シフト設定について、出力フレームはこの 7 サンプル長の Gold シーケンスにおける 6 番目のサンプルから始まります。

release(goldseq);
goldseq.Shift = -1;
outseq = goldseq()'
outseq = 1×15

     0     1     1     0     0     0     0     0     1     1     0     0     0     0     0

release(goldseq);
goldseq.Shift = 6;
outseq = goldseq()'
outseq = 1×15

     0     1     1     0     0     0     0     0     1     1     0     0     0     0     0

release(goldseq);
goldseq.Shift = 13;
outseq = goldseq()'
outseq = 1×15

     0     1     1     0     0     0     0     0     1     1     0     0     0     0     0

リセット入力にさまざまな値を使用して Gold シーケンスを生成します。

フレームあたりのサンプル数を 15 に指定し、リセット入力を有効にした Gold シーケンス System object™ を作成します。7 サンプルの Gold シーケンスを生成します。生成された Gold シーケンスを基準に、オブジェクトによって出力されるフレームの開始点を観測するため、フレームあたりのサンプル値には、シーケンス長の 2 倍よりも 1 つ多いサンプルが含まれています。

goldseq = comm.GoldSequence( ...
    "FirstPolynomial","x^3+x^2+1", ...
    "SecondPolynomial","x^3+x+1", ...
    "FirstInitialConditions",[0 0 1], ...
    "SecondInitialConditions",[0 1 1], ...
    "Index",3, ...
    "ResetInputPort",true, ...
    "SamplesPerFrame",15);

オブジェクトがシーケンスを初期条件にリセットしないように、スカラーのリセット入力値を 0 に指定します。シーケンスの連続する 15 サンプルのフレームを表示します。2 番目のフレームは、最初のフレームが終了した位置 (Gold シーケンスの 2 番目の要素) からシーケンスを継続します。

resetseq = 0;
x1 = goldseq(resetseq)'
x1 = 1×15

     1     1     0     0     0     0     0     1     1     0     0     0     0     0     1

x2 = goldseq(resetseq)'
x2 = 1×15

     1     0     0     0     0     0     1     1     0     0     0     0     0     1     1

シーケンスを初期条件にリセットするには、スカラーのリセット入力値を 1 に指定します。シーケンスの連続する 15 サンプルのフレームを表示します。2 番目のフレームは、Gold シーケンスの最初の要素から始まるようになります。

resetseq = 1;
x3 = goldseq(resetseq)'
x3 = 1×15

     1     1     0     0     0     0     0     1     1     0     0     0     0     0     1

x4 = goldseq(resetseq)'
x4 = 1×15

     1     1     0     0     0     0     0     1     1     0     0     0     0     0     1

ベクトルを受け入れるようにオブジェクトのリセット入力を再構成するには、オブジェクトを解放します。0 で埋められたリセット入力ベクトルを指定します。シーケンスの連続する 15 サンプルのフレームを表示します。オブジェクトがシーケンスを初期条件にリセットしないため、2 番目のフレームは Gold シーケンスの 2 番目の要素から始まります。

release(goldseq)
resetseq = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]';
x5 = goldseq(resetseq)'
x5 = 1×15

     1     1     0     0     0     0     0     1     1     0     0     0     0     0     1

x6 = goldseq(resetseq)'
x6 = 1×15

     1     0     0     0     0     0     1     1     0     0     0     0     0     1     1

非ゼロ値の 2 つの要素をもつリセット入力ベクトルを指定します。シーケンスの連続する 15 サンプルのフレームを表示します。2 番目と 3 番目のフレームは前のフレームからシーケンスを継続しますが、リセット入力に指定されたベクトルにおける非ゼロのエントリの位置により、フレームの 3 番目と 9 番目のサンプルでシーケンスをリセットします。

resetseq = [0 0 1 0 0 0 0 0 1 0 0 0 0 0 0]';
x7 = goldseq(resetseq)'
x7 = 1×15

     0     0     1     1     0     0     0     0     1     1     0     0     0     0     0

x8 = goldseq(resetseq)'
x8 = 1×15

     1     1     1     1     0     0     0     0     1     1     0     0     0     0     0

x9 = goldseq(resetseq)'
x9 = 1×15

     1     1     1     1     0     0     0     0     1     1     0     0     0     0     0

詳細

すべて展開する

参照

[1] Proakis, John G. Digital Communications. 5th ed. New York: McGraw Hill, 2007.

[2] Gold, R. “Maximal Recursive Sequences with 3-Valued Recursive Cross-Correlation Functions (Corresp.).” IEEE Transactions on Information Theory 14, no. 1 (January 1968): 154–56. https://doi.org/10.1109/TIT.1968.1054106.

[3] Gold, R. “Optimal Binary Sequences for Spread Spectrum Multiplexing (Corresp.).” IEEE Transactions on Information Theory 13, no. 4 (October 1967): 619–21. https://doi.org/10.1109/TIT.1967.1054048.

[4] Sarwate, D.V., and M.B. Pursley. “Crosscorrelation Properties of Pseudorandom and Related Sequences.” Proceedings of the IEEE 68, no. 5 (1980): 593–619. https://doi.org/10.1109/PROC.1980.11697.

[5] Dixon, Robert C. Spread Spectrum Systems: With Commercial Applications. 3rd ed. New York: Wiley, 1994.

拡張機能

バージョン履歴

R2008a で導入