Main Content

comm.KasamiSequence

カサミ シーケンスの生成

説明

comm.KasamiSequence System object™ は、カサミ シーケンスのセットから 1 つのシーケンスを生成します。カサミ シーケンスは、相互相関特性をもつ一連のシーケンスです。詳細については、カサミ シーケンスを参照してください。

カサミ シーケンスを生成するには、以下の手順に従います。

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

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

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

作成

説明

kasamiseq = comm.KasamiSequence は、カサミ シーケンス System object を作成します。このオブジェクトは、カサミ シーケンスを生成します。

kasamiseq = comm.KasamiSequence(Name,Value) は、1 つ以上の名前と値の引数を使用してプロパティを設定します。たとえば、'Polynomial','z^8 + z^4 + z^3 + z^2 + 1' は生成多項式を指定します。

プロパティ

すべて展開する

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

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

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

生成多項式。次のオプションのいずれかとして指定します。

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

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

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

降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなる行ベクトルとして、原始生成多項式を指定できます。あるいは、関数 primpoly を使用して、ガロア体に対する原始多項式を求めることや、関数 gfprimck を使用して、多項式が有効な原始多項式であるかどうかをチェックすることもできます。

例: 'z^8 + z^4 + z^3 + z^2 + 1'[1 0 0 0 1 1 1 0 1]、および [8 4 3 2 0] は同一の多項式 z8 + z4 + z3 + z2 + 1 を表します。

データ型: double | char | string

シフト レジスタの初期条件。次のいずれかのオプションとして指定します。

  • バイナリ値スカラー — この値はシフト レジスタのすべてのセルの初期条件を指定します。

  • 生成多項式の次数と等しい長さをもつバイナリ値行ベクトル — このベクトルの各要素は、シフト レジスタで対応するセルの初期値に対応します。

メモ

非ゼロのシーケンスを生成するためには、スカラーまたは指定されたベクトルの要素の少なくとも 1 つは非ゼロ値でなければなりません。

データ型: double

シーケンス インデックス。整数または [k m] の形式のベクトルを指定して、シーケンスの候補のセットから目的のカサミ シーケンスを選択します。カサミ シーケンスの周期は、N = 2n –1 です。ここで n は、Polynomial プロパティに指定された生成多項式の次数に等しい、非負の偶数の整数です。

カサミ シーケンスには 2 つのクラスがあります。スモール セットから取得されたシーケンスと、ラージ セットから取得されたシーケンスです。スモール セットからカサミ シーケンスを選択するには、このプロパティを範囲 [0, 2n/2–2] の整数に設定します。ラージ セットからシーケンスを選択するには、このプロパティを [k m] の形式のベクトルに設定します。k は範囲 [–2, 2n–2] の整数、m は範囲 [–1, 2n/2–2] の整数でなければなりません。詳細については、カサミ シーケンスを参照してください。

データ型: double

開始点からのシーケンスのオフセット。整数として指定します。カサミ シーケンスの周期は N = 2n-1 です。ここで n は、Polynomial プロパティで指定した生成多項式の次数です。シフト値はシーケンス周期に対してラップされます。

データ型: double

可変サイズの出力を有効にするオプション。次の数値または logical 値のいずれかとして指定します。

  • false (0) -- SamplesPerFrame プロパティを使用して、フレームあたりの出力サンプル数を指定します。

  • true (1) -- outputsize 入力引数を使用して、カサミ シーケンスの出力サイズを指定します。入力値は、MaximumOutputSize プロパティの値以下でなければなりません。

データ型: logical | double

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

例: [10 1] は、最大出力サイズを 101 列として指定します。

依存関係

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

データ型: double

フレームごとの出力サンプル数。正の整数で指定します。

このプロパティを値 M に設定した場合、出力はカサミ シーケンスの M サンプルを含み、その周期は N = 2n–1 となります。値 n は、Polynomial プロパティに指定された生成多項式の次数です。

依存関係

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

データ型: double

発生器のリセット入力を有効にするオプション。logical または数値である false (0) または true (1) として指定します。resetseq 入力引数を有効にするには、このプロパティを true (1) に設定します。この入力引数は、カサミ シーケンス発生器の状態を、InitialConditions プロパティに指定された初期条件にリセットします。

データ型: logical | double

出力カサミ シーケンスのデータ型。'double' または 'logical' として指定します。

データ型: char | string

使用法

説明

outsequence = kasamiseq() はカサミ シーケンスを生成します。

outsequence = kasamiseq(outputsize) は、出力シーケンスの長さを指定します。

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

outsequence = kasamiseq(resetseq) は、シーケンス発生器のリセット信号を指定します。

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

outsequence = kasamiseq(outputsize,resetseq) は、出力シーケンスの長さ、およびシーケンス発生器のリセット信号を指定します。

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

入力引数

すべて展開する

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

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

依存関係

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

データ型: double

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

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

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

依存関係

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

データ型: double

出力引数

すべて展開する

カサミ シーケンス。列ベクトルとして返されます。

データ型: double

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

バイナリ データを生成し、このデータに BPSK 変調を適用します。

data = randi([0 1],10,1);
modData = pskmod(data,2);

x8+x4+x3+x2+1 の生成多項式、シフト レジスタの初期条件、および長さ 255 のカサミ シーケンスを指定して、カサミ シーケンス発生器 System object を作成します。

kasamiseq = comm.KasamiSequence('Polynomial',[8 4 3 2 0], ...
    'InitialConditions',[0 0 0 0 0 0 0 1],'SamplesPerFrame',255);

カサミ シーケンスを生成してバイポーラ形式に変換します。

kasSeq = kasamiseq();
kasSeq = 2*kasSeq - 1;

1/255 のゲインを適用し、拡散処理によって全体的な信号強度が上がらないようにします。

kasSeq = kasSeq/sqrt(255);

カサミ シーケンスを使用して BPSK データを拡散します。

spreadData = modData*kasSeq';
spreadData = spreadData(:);

拡散されたデータ シーケンスの長さが、入力データ シーケンスの 255 倍であることを確認します。

spreadingFactor = length(spreadData)/length(data)
spreadingFactor = 255

拡散処理によって信号強度が上がっていないことを確認します。

modSigPwr = sum(abs(modData).^2)/length(data)
modSigPwr = 1
spreadSigPwr = sum(abs(spreadData).^2)/length(data)
spreadSigPwr = 1.0000

詳細

すべて展開する

参照

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

[2] 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.

[3] Peterson, W. Wesley, and E. J. Weldon. Error-correcting Codes.1972.

拡張機能

バージョン履歴

R2012a で導入

参考

オブジェクト

ブロック