Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

comm.Scrambler

入力信号のスクランブル

説明

comm.Scrambler オブジェクトはスカラーまたは列ベクトル入力信号にスクランブルを適用します。

以下の図は、スクランブラーの操作を示しています。加算器は剰余 N の演算を行います。ここで N は CalculationBase プロパティで指定される値です。

タイム ステップごとに、入力により、レジスタの内容が順にシフトします。Polynomial プロパティを使用して、スクランブラー内の各スイッチのオン/オフ状態を指定します。

入力信号をスクランブルするには、以下の手順に従います。

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

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

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

作成

説明

scrambler = comm.Scrambler はスクランブラー System object™ を作成します。このオブジェクトは、Polynomial プロパティで指定される線形フィードバック シフト レジスタを使用して入力データをスクランブルします。

scrambler = comm.Scrambler(base,poly,cond) は、スクランブラー オブジェクトを作成します。このとき、CalculationBase プロパティは base に、Polynomial プロパティは poly に、InitialConditions プロパティは cond に設定します。

例: comm.Scrambler(8,'1 + z^-2 + z^-3 + z^-5 + z^-7',[0 3 2 2 5 1 7]) は、計算ベースを 8 に、またスクランブラーの多項式および初期条件を指定したとおりに設定します。

scrambler = comm.Scrambler(___,Name,Value) は、1 つ以上の名前と値のペアおよび上記の構文のいずれかを使用してプロパティを設定します。各プロパティ名を一重引用符で囲みます。

例: comm.Scrambler('CalculationBase',2)

プロパティ

すべて展開する

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

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

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

剰余演算のスクランブラーで使用される入力データの範囲。非負の整数で指定します。このオブジェクトの入力と出力は、0 から CalculationBase1 の整数です。

データ型: double

スクランブラー内の線形フィードバック シフト レジスタ接続。文字ベクトル、整数ベクトル、またはバイナリ ベクトルとして指定します。Polynomial プロパティは、スクランブラーの各スイッチがオンまたはオフであるかを定義します。多項式を以下のように指定します。

  • '1 + z^-6 + z^-8' などの文字ベクトル。この方法で多項式を指定する詳細については、多項式の文字表現を参照してください。

  • [0 -6 -8] などの整数ベクトル。z-1 の降べきの順でスクランブラーの係数をリストします。ここで、p(z-1) = 1 + p1z-1 + p2z-2 + ... のようになります。

  • [1 0 0 0 0 0 1 0 1] などのバイナリ ベクトル。1 の係数で多項式に現れる z のべき乗をリストします。この場合は、スクランブル多項式の次数は、バイナリ ベクトルの長さよりも 1 つ少なくなります。

例: '1 + z^-6 + z^-8'[0 -6 -8]、および [1 0 0 0 0 0 1 0 1] は、すべて以下の多項式を表します。

p(z-1) = 1 + z-6 + z-8

データ型: double | char

  • 'Property'InitialConditions プロパティを使用してスクランブラーの初期状態を指定します。

  • 'Input port' – 追加の入力引数 initcond を使用してスクランブラーの初期状態を、オブジェクトの呼び出し時に指定します。

データ型: char

シミュレーションが開始するときのスクランブラーのレジスタの初期条件。非負の整数ベクトルで指定します。InitialConditions の長さは、Polynomial プロパティの次数と同じでなければなりません。ベクトル要素の値は、0 から CalculationBase1 の整数でなければなりません。

依存関係

このプロパティは、InitialConditionsSource'Property' に設定されている場合に使用可能です。

スクランブラーの状態リセット端子。false または true として指定します。ResetInputPorttrue の場合、追加の入力引数 reset を使用して、スクランブラー オブジェクトを、オブジェクトの呼び出し時にリセットします。

依存関係

このプロパティは、InitialConditionsSource'Property' に設定されている場合に使用可能です。

使用法

説明

scrambledOut = scrambler(signal) は、入力信号をスクランブルします。出力のデータ型と長さは入力ベクトルと同じです。

scrambledOut = scrambler(signal,initcond) は、線形フィードバック シフト レジスタの初期条件を指定する値による、追加の入力を提供します。

この構文は、オブジェクトの InitialConditionsSource プロパティを 'Input port' に設定した場合に適用されます。

scrambledOut = scrambler(signal,reset) は、スクランブラーの状態をリセットするかどうかを示す追加の入力を提供します。

この構文は、InitialConditionsSource'Property'、および ResetInputPorttrue に設定した場合に適用されます。

入力引数

すべて展開する

入力信号。列ベクトルで指定します。

例: scrambledOut = scrambler([0 1 1 0 1])

データ型: double | logical

シミュレーションが開始するときの初期のスクランブラー レジスタの条件。非負の整数列ベクトルで指定します。initcond の長さは、Polynomial プロパティの次数と同じでなければなりません。ベクトル要素の値は、0 から CalculationBase1 の整数でなければなりません。

例: scrambledOut = scrambler(signal,[0 1 1 0]) は、多項式の次数 4 および計算ベース 2 以上のスクランブラーの潜在的な初期レジスタ状態に対応します。

データ型: double

シミュレーションが開始するときにスクランブラーの初期状態をリセットします。スカラーとして指定します。reset の値が非ゼロの場合、オブジェクトは呼び出される前にリセットされます。

例: scrambledOut = scrambler(signal,0) は、スクランブラーの状態をリセットすることなく、入力信号をスクランブルします。

データ型: double

出力引数

すべて展開する

スクランブルした出力。signal と同じデータ型と長さの列ベクトルとして返されます。

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

計算ベースが 8 の comm.Scrambler System object™ と comm.Descrambler System object™ を使用して、8 値データのスクランブルおよびデスクランブルを行います。

入力引数を使用して計算ベース、多項式、および初期条件を指定し、スクランブラーおよびデスクランブラー オブジェクトを作成します。スクランブラーとデスクランブラーの多項式は異なるデータ形式で指定されますが、これらのデータ形式は等価です。

N = 8;
scrambler = comm.Scrambler(N,'1 + z^-2 + z^-3 + z^-5 + z^-7', ...
    [0 3 2 2 5 1 7]);
descrambler = comm.Descrambler(N,[1 0 1 1 0 1 0 1], ...
    [0 3 2 2 5 1 7]);

ランダムな整数のスクランブルとデスクランブルを行います。元のデータ、スクランブルしたデータおよびデスクランブルしたデータのシーケンスを表示します。

data = randi([0 N-1],5,1);
scrData = scrambler(data);
deScrData = descrambler(scrData);
[data scrData deScrData]
ans = 5×3

     6     7     6
     7     5     7
     1     7     1
     7     0     7
     5     3     5

デスクランブルしたデータが元のデータと一致することを確認します。

isequal(data,deScrData)
ans = logical
   1

関数呼び出し間で初期条件を変更しながら、四相データのスクランブルおよびデスクランブルを行います。

計算ベース 4 をもつスクランブラー System object およびデスクランブラー System object を作成します。オブジェクトに対する引数として初期条件を設定できるように、InitialConditionsSource プロパティを 'Input port' に設定します。

N = 4;
scrambler = comm.Scrambler(N,'1 + z^-3','InitialConditionsSource','Input port');
descrambler = comm.Descrambler(N,'1 + z^-3','InitialConditionsSource','Input port');

関数 symerr によって出力される誤りを格納するために使用する、エラー ベクトルのメモリを事前に割り当てます。

errVec = zeros(10,1);

ループ実行のたびに初期条件 initCond を変更しながら、乱数の整数のスクランブルおよびデスクランブルを行います。関数 symerr を使用して、スクランブルおよびデスクランブル操作によってシンボル誤りが生じたかどうかを判断します。

for k = 1:10
    initCond = randperm(3)';
    data = randi([0 N-1],5,1);
    scrData = scrambler(data,initCond);
    deScrData = descrambler(scrData,initCond);
    errVec(k) = symerr(data,deScrData);
end

errVec を調べて、デスクランブラーからの出力が元のデータに一致することを確認します。

errVec
errVec = 10×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0

拡張機能

参考

オブジェクト

ブロック

R2012a で導入