Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.CPFSKDemodulator

CPFSK メソッドとビタビ アルゴリズムを使用した復調

説明

comm.CPFSKDemodulator System object™ は、連続位相周波数偏移変調 (CPFSK) メソッドを使用して変調された信号を復調します。入力は、変調信号のベースバンド表現です。

CPFSK メソッドを使用して変調された信号を復調するには、次のようにします。

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

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

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

作成

説明

cpfskDemod=comm.CPFSKDemodulator は復調器 System object を作成します。このオブジェクトは、CPFSK メソッドで変調された入力データをビタビ アルゴリズムで復調します。

cpfskDemod=comm.CPFSKDemodulator(Name=Value) は、CPFSK 復調器オブジェクトを作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.CPFSKDemodulator(InitialPhaseOffset=pi/4,TracebackDepth=25) は、初期位相オフセットが pi/4 ラジアンで、ビタビ アルゴリズムのトレースバック長が 25 であるオブジェクトを構成します。

cpfskDemodcomm.CPFSKDemodulator(M,Name=Value) は、ModulationOrder プロパティを M に設定し、さらにオプションで名前と値の引数を使用して、CPFSK 復調器オブジェクトを作成します。

プロパティ

すべて展開する

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

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

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

シンボル アルファベットのサイズ。2 のべき乗の整数スカラーとして指定します。

ビットとしてデータを出力するためのオプション。数値または logical の 1 (true) または 0 (false) として指定します。

  • このプロパティを false に設定した場合、出力 Y は、範囲が [–(M–1), (M–1)] の整数から成り、長さが (N / SamplesPerSymbol) である列ベクトルになります。N は入力ベースバンド変調シンボルの数 (具体的には入力信号の長さ) です。MModulationOrder プロパティの値を表します。

  • このプロパティを true に設定した場合、出力 Y は、長さが P×(N / SamplesPerSymbol) のバイナリ列ベクトルになります。出力には長さ P のビット ワードが含まれています。ここで、P = log2(M) です。このシナリオでは、オブジェクトはまず [–(M–1), (M–1)] の範囲に含まれる奇数値 K に復調された各シンボルをマップします。次に、オブジェクトは、K を非負の整数 (K+M–1)/2 にマップします。最後に、オブジェクトは、それぞれの非負の整数を、SymbolMapping プロパティで指定したマッピングを使用して、長さ P のビット ワードにマップします。

シンボルの符号化。'Binary' または 'Gray' として指定します。このプロパティは、オブジェクトがそれぞれの復調された整数シンボル値を長さ P のビット ワードにマップする方法を決定します。ここで、P = log2(M) および M は、ModulationOrder プロパティを表します。整数シンボル値の範囲は [0, M] です。

  • このプロパティを 'Binary' に設定すると、オブジェクトはバイナリ符号の順序を使用します。

  • このプロパティを 'Gray' に設定すると、オブジェクトはグレイ符号順を使用します。

依存関係

このプロパティは、BitOutput プロパティを true に設定した場合に適用されます。

変調指数。スカラー h、または列ベクトル [h0, h1, …. hH–1] として指定します。H–1 は列ベクトルの長さを表します。

  • hi が区間によって異なるときは、オブジェクトは多重 h で動作します。

  • オブジェクトが多重 h で動作するときは、hi は有理数でなければなりません。

初期位相オフセット (ラジアン単位)。数値スカラーとして指定します。

入力シンボルあたりのサンプル数。正の整数スカラーとして指定します。

ビタビ アルゴリズムのトレースバック長。正の整数スカラーとして指定します。このプロパティの値は出力遅延の値でもあります。この値は、出力内の復調された最初の有意なシンボルに先立つ 0 シンボルの数です。

出力のデータ型。'double''int8''int16''int32'、または 'logical' として指定します。

  • BitOutput プロパティを false に設定すると、出力データ型を 'double''int8''int16'、または 'int32' に設定できます。

  • BitOutput プロパティを true に設定すると、出力データ型を 'double' または 'logical' に設定できます。

使用法

説明

Y = cpfskDemod(X) は、CPFSK メソッドを使用して入力信号を復調します。

入力引数

すべて展開する

CPFSK 変調されたベースバンド信号。SamplesPerSymbol の数の整数倍と同じ長さの列ベクトルとして指定します。

このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。詳細については、Variable-Size Signal Support with System Objectsを参照してください。

データ型: double | single
複素数のサポート: あり

出力引数

すべて展開する

復調された出力信号。列ベクトルまたは行列として返されます。オブジェクトが値を整数として出力するかビットとして出力するかを指定するには、BitOutput プロパティを使用します。出力データ型を指定するには、OutputDataType プロパティを使用します。

データ型: double | int8 | int16 | int32 | logical

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

CPFSK 変調器、AWGN チャネル、および CPFSK 復調器を作成します。変調次数を 8 に設定し、ビット入力とグレイ符号化シンボル マッピングを有効にして、変調器と復調器を構成します。

M = 8; % Modulation order
cpfskMod = comm.CPFSKModulator(M, ...
    BitInput=true, ...
    SymbolMapping='Gray');
awgnChan = comm.AWGNChannel( ...
    NoiseMethod='Signal to noise ratio (SNR)', ...
    SNR=0);
cpfskDemod = comm.CPFSKDemodulator(M, ...
    BitOutput=true, ...
    SymbolMapping='Gray');

シミュレーション パラメーターを定義します。CPFSK 復調器が使用するビタビ アルゴリズムによって発生する遅延を考慮に入れるエラー レート計算機を作成します。

numFrames = 1000; % Number of frames transmitted
k = log2(M);      % Bits per symbol 
spf = 100;        % Symobls per frame

delay = log2(M)*cpfskDemod.TracebackDepth;
errorRate = comm.ErrorRate( ...
    ReceiveDelay=delay);
for counter = 1:numFrames
    data = randi([0 1],k*spf,1);
    modSignal = cpfskMod(data);
    noisySignal = awgnChan(modSignal);
    receivedData = cpfskDemod(noisySignal);
    errorStats = errorRate(data,receivedData);
end

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
    errorStats(1),errorStats(2))
Error rate = 0.004247
Number of errors = 1274

アルゴリズム

すべて展開する

CPFSK の場合、シンボルごとの位相シフトは、π × h です。ここで、h は変調指数です。

参照

[1] Anderson, John B., Tor Aulin, and Carl-Erik Sundberg. Digital Phase Modulation. New York: Plenum Press, 1986.

拡張機能

バージョン履歴

R2012a で導入

すべて展開する