Main Content

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

comm.CPMDemodulator

CPM 法とビタビ アルゴリズムを使用した信号の復調

説明

comm.CPMDemodulator System object™ は、連続位相変調 (CPM) 法を使用して変調された入力信号を復調します。入力は、変調信号のベースバンド表現です。復調および適用されるフィルター処理の詳細については、CPM 復調法およびパルス整形のフィルター処理を参照してください。

CPM 法を使用して変調された信号を復調するには、次のようにします。

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

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

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

作成

説明

cpmdemod = comm.CPMDemodulator は、ビタビ アルゴリズムを使用して入力 CPM 信号を復調する復調器 System object を作成します。

cpmdemod = comm.CPMDemodulator(Name,Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、'SymbolMapping','Gray' は、変調されたシンボルに対してグレイ符号順のシンボル マッピングを指定します。

cpmdemod = comm.CPMDemodulator(M,Name,Value) は、ModulationOrder プロパティを M に設定し、オプションで名前と値の引数を設定します。

プロパティ

すべて展開する

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

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

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

変調次数。2 のべき乗のスカラーとして指定します。変調次数 M = 2k は、信号コンスタレーション点の数を指定します。ここで、k は、シンボルごとのビット数を示す正の整数です。

データ型: double

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

  • 整数としてデータを出力するには、このプロパティを false に設定します。

  • ビットとしてデータを出力するには、このプロパティを true に設定します。

詳細については、整数値とバイナリ値の出力信号を参照してください。

データ型: logical

コンスタレーション ビットのシンボルの符号化マッピング。'Binary' または 'Gray' として指定します。

  • このプロパティを 'Binary' に設定すると、バイナリ符号の順序を使用してシンボルがマッピングされます。

  • このプロパティを 'Gray' に設定すると、グレイ符号の順序を使用してシンボルがマッピングされます。

詳細については、整数値とバイナリ値の出力信号を参照してください。

依存関係

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

変調指数。非負のスカラーまたは列ベクトルとして指定します。詳細については、CPM 復調法を参照してください。

データ型: double

変調された信号の位相遷移を滑らかにするために変調器が使用する周波数パルス整形のタイプ。'Rectangular''Raised Cosine''Spectral Raised Cosine''Gaussian'、または 'Tamed FM' として指定します。詳細については、パルス整形のフィルター処理を参照してください。

スペクトル レイズド コサイン パルスの最大ローブのメイン ローブ期間。変調された信号をパルス整形するために復調器が使用するシンボル区間の数を表す正の整数として指定します。

依存関係

このプロパティを有効にするには、FrequencyPulse プロパティを 'Spectral Raised Cosine' に設定します。

データ型: double

スペクトル レイズド コサイン パルスのロールオフ係数。範囲が [0, 1] のスカラーとして指定します。

依存関係

このプロパティを有効にするには、FrequencyPulse プロパティを 'Spectral Raised Cosine' に設定します。

データ型: double

ガウス パルス整形の帯域幅とシンボル時間の積。正のスカラーとして指定します。BandwidthTimeProduct は、符号間干渉の増加を代償に帯域幅を狭くするために使われます。

依存関係

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

データ型: double

シンボル区間における周波数パルス整形の長さ。正の整数として指定します。周波数パルス長の詳細については、パルス整形のフィルター処理の LT を参照してください。

データ型: double

シンボル プレヒストリ。範囲 [– (ModulationOrder – 1), (ModulationOrder – 1)] の奇数の整数要素をもつスカラーまたはベクトルとして指定します。このプロパティは、オブジェクトの最初の呼び出しの前に、変調器によって使用されるデータ シンボルを新しいものから順番に定義します。

  • スカラー値は長さ PulseLength – 1 のベクトルに展開されます。

  • ベクトルの場合、長さが PulseLength – 1 でなければなりません。

データ型: double

変調波形の初期位相オフセット (ラジアン単位)。スカラーとして指定します。

データ型: double

入力シンボルあたりのサンプル数。正の整数として指定します。このプロパティは、出力される整数またはバイナリ ワードごとのサンプル入力の数を表します。パルス整形で定義されているように、すべての非バイナリ スキームに対して、この値は 1 より大きくなければなりません。

データ型: double

ビタビ アルゴリズムのトレースバック長。ビタビ アルゴリズムが各トレースバック パスの構築に使用するトレリス分岐の数を表す正の整数として指定します。このプロパティの値はまた出力遅延であり、出力内の復調された最初の有意なシンボルに先立つ 0 シンボルの数です。詳細については、トレースバック長と出力遅延を参照してください。

データ型: double

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

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

  • BitOutput プロパティを true に設定した場合、出力データ型には 'double''single''int8''int16''int32''uint8''uint16''uint32'、または 'logical' を設定できます。

使用法

説明

Y = cpmdemod(X) は、入力信号に CPM 復調法を適用し、復調された信号を返します。

入力引数

すべて展開する

CPM 変調された信号。SamplesPerSymbol プロパティの整数倍と同じ長さの列ベクトルとして指定します。

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

出力引数

すべて展開する

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

詳細については、整数値とバイナリ値の出力信号を参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

CPM 変調器 System object と CPM 復調器 System object を作成します。

    cpmmodulator = comm.CPMModulator(8, ...
        'BitInput',true, ...
        'SymbolMapping','Gray');
    cpmdemodulator = comm.CPMDemodulator(8, ...
        'BitOutput',true, ...
        'SymbolMapping','Gray');

エラー レート計算機 System object™ を作成します。これはビタビ アルゴリズムによって発生する遅延を考慮します。

    delay = log2(cpmdemodulator.ModulationOrder) ...
        * cpmdemodulator.TracebackDepth;
    errorRate = comm.ErrorRate('ReceiveDelay',delay);

3 ビットのワードを 100 個送信し、エラー レートの結果を出力します。

    for counter = 1:100
        data = randi([0 1],300,1);
        modSignal = cpmmodulator(data);
        noisySignal = awgn(modSignal,0);
        receivedData = cpmdemodulator(noisySignal);
        errorStats = errorRate(data,receivedData);
    end
    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1),errorStats(2))
Error rate = 0.004474
Number of errors = 134

comm.CPMModulatorcomm.CPMDemodulatorSystem object を使用して、ガウス周波数偏移変調 (GFSK) の変調と復調をランダム ビット データに適用します。

GFSK の変調器と復調器のペアを作成します。

gfskMod = comm.CPMModulator( ...
    'ModulationOrder',2, ...
    'FrequencyPulse','Gaussian', ...
    'BandwidthTimeProduct',0.5, ...
    'ModulationIndex',1, ...
    'BitInput',true);
gfskDemod = comm.CPMDemodulator( ...
    'ModulationOrder',2, ...
    'FrequencyPulse','Gaussian', ...
    'BandwidthTimeProduct',0.5, ...
    'ModulationIndex',1, ...
    'BitOutput',true);

ランダム ビット データを生成して GFSK 変調を適用します。散布図を使用してコンスタレーションを表示します。

numSym = 100;
x = randi([0 1],numSym*gfskMod.SamplesPerSymbol,1);
y = gfskMod(x);
eyediagram(y,16)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents In-phase. Axes object 2 with title Eye Diagram for Quadrature Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents Quadrature.

GFSK 変調されたデータを復調します。復調された信号データが元のデータと等しいことを検証するには、GFSK の変調と復調のプロセスでガウス フィルター処理によって発生する遅延を考慮します。

z = gfskDemod(y);
delay = finddelay(x,z);
isequal(x(1:end-delay),z(delay+1:end))
ans = logical
   1

詳細

すべて展開する

参照

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

拡張機能

バージョン履歴

R2012a で導入

すべて展開する