Main Content

comm.CPFSKModulator

CPFSK メソッドを使用した変調

説明

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

CPFSK メソッドを使用して変調するには、次のようにします。

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

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

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

作成

説明

cpfskMod = comm.CPFSKModulator は、CPFSK 変調方式を使用して入力信号を変調する変調器 System object を作成します。

cpfskMod = comm.CPFSKModulator(Name=Value) は、CPFSK 変調器オブジェクトを作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.CPFSKModulator(InitialPhaseOffset=pi/4) は、初期位相オフセットが pi/4 ラジアンであるオブジェクトを構成します。

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

プロパティ

すべて展開する

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

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

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

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

入力をビットとして提供するオプション。数値または logical の 0 (false) または 1 (true) として指定します。

  • このプロパティを false に設定する場合、入力 X は範囲 [-(M-1), (M-1)] の奇数整数値の列ベクトルでなければなりません。ここで、M は ModulationOrder プロパティの値を表します。入力データは倍精度または符号付き整数の値でなければなりません。

  • このプロパティを true に設定する場合、入力 X は長さ P のビット ワードの列ベクトルでなければなりません。ここで、P = log2(M) です。オブジェクトは、SymbolMapping プロパティで指定したマッピングを使用して、範囲 [0, M] の整数 K に各ビット ワードをマップします。次に、オブジェクトは整数 K を中間値 2K–(M–1) にマップし、BitInput プロパティが false に設定されている場合と同様に先に進みます。入力データは倍精度または logical の値でなければなりません。

データ型: double | logical

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

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

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

依存関係

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

変調指数。スカラー h、または次の列ベクトルとして指定します。[h0, h1, …,hH-1]。ここで、H-1 は列ベクトルの長さです。シンボル上の位相シフトは、π × h です。

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

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

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

出力シンボルあたりのサンプル数。正の整数スカラーとして指定します。アップサンプリング係数は、オブジェクト呼び出し時に各入力サンプルに対して生成される出力サンプルの数です。

出力のデータ型。'double' または 'single' として指定します。

使用法

説明

Y = cpfskMod(X) は、CPFSK メソッドで入力データ X を変調します。出力は変調された CPFSK ベースバンド信号です。

入力引数

すべて展開する

入力データ。整数スカラーまたは列ベクトルとして指定します。

  • BitInputfalse に設定する場合、入力データは倍精度または符号付き整数でなければなりません。

  • BitInputtrue に設定する場合、入力データは倍精度または logical でなければなりません。

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

出力引数

すべて展開する

CPFSK 変調されたベースバンド出力。列ベクトルとして返されます。出力ベクトル Y の長さは、SamplesPerSymbol プロパティで指定したシンボルあたりのサンプル数に入力サンプル数を掛け合わせたものと同じです。OutputDataType プロパティは、出力のデータ型を指定します。

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

オブジェクト関数

オブジェクト関数を使用するには、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 で導入