Main Content

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

comm.CPMDemodulator

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

説明

CPMDemodulator オブジェクトは、連続位相変調を使用して変調された信号を復調します。入力は、変調信号のベースバンド表現です。

連続位相変調を使用して変調された信号を復調するには、以下の手順に従います。

  1. CPM 復調器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.CPMDemodulator のプロパティに従い、信号を復調します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object™ によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

H = comm.CPMDemodulator は復調器 System object H を作成します。このオブジェクトは、ビタビ アルゴリズムを使って入力連続位相変調 (CPM) データを復調します。

H = comm.CPMDemodulator(Name,Value) は、指定の各プロパティが指定の値に設定された CPM 復調器オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

H = comm.CPMDemodulator(M,Name,Value) は、ModulationOrder プロパティが M に設定され、他の指定のプロパティが指定の値に設定された CPM 復調器オブジェクト H を作成します。

プロパティ

ModulationOrder

シンボル アルファベットのサイズ

シンボル アルファベットのサイズを指定します。このプロパティの値は、2 の累乗の実数、整数スカラーを必要とします。既定の設定は 4 です。

BitOutput

ビットとしての出力データ

出力がビットのグループまたは整数値で構成されているかどうかを指定します。既定の設定は false です。

このプロパティを false に設定すると、step メソッドは、N/SamplesPerSymbol に等しい長さの、-(ModulationOrder-1) から ModulationOrder–1 までの整数を要素とする列ベクトルを出力します。ここで、N は、ベースバンド変調済みの入力シンボル数を示す入力信号の長さです。

このプロパティを true に設定すると、step メソッドは P×(N/SamplesPerSymbol) に等しい長さのバイナリ列ベクトルを出力します。ここで、P = log2(ModulationOrder) です。出力には長さ -P ビット ワードが含まれています。このシナリオでは、オブジェクトははじめに –(ModulationOrder–1) から ModulationOrder–1 までの奇数の整数値 K に復調された各シンボルをマップします。次に、オブジェクトは、K を非負の整数 (K+ModulationOrder–1)/2 にマップします。最後に、オブジェクトは、それぞれの非負の整数を、SymbolMapping プロパティに指定されたマッピングを使用して、長さ -P のバイナリ ワードにマップします。

SymbolMapping

シンボルの符号化

復調されたシンボルのマッピングを Binary または Gray のどちらかに指定します。既定の設定は Binary です。このプロパティは、オブジェクトがそれぞれの復調された整数シンボル値 (0 から ModulationOrder–1 までの範囲) を P- 長さのビット ワードにマップする方法を決定します。ここで、P = log2(ModulationOrder) です。

このプロパティを Binary に設定すると、オブジェクトは通常の 2 値符号の順序を使用します。

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

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

ModulationIndex

変調指数

変調指数を指定します。既定の設定は 0.5 です。このプロパティの値には、スカラー値 h、または列ベクトル [h0, h1, …hH-1] を指定できます。

ここで、H-1 は列ベクトルの長さです。

hi が区間によって異なるときは、オブジェクトは多重 h で動作します。オブジェクトが多重 h で動作するときは、hi は有理数でなければなりません。

FrequencyPulse

周波数パルス整形

変調器が入力変調信号の位相遷移を滑らかにするために使用したパルス整形のタイプを RectangularRaised CosineSpectral Raised CosineGaussian または Tamed FM のいずれかに指定します。既定の設定は Rectangular です。

MainLobeDuration

スペクトル レイズド コサイン パルスのメイン ローブ期間

スペクトル レイズド コサイン パルスの最大ローブの期間をシンボル区間数で指定します。この値は、変調器が入力変調信号をパルス整形するために使用した値です。既定の設定は 1 です。このプロパティは、実数値の、正の整数スカラーを必要とします。このプロパティは、FrequencyPulse プロパティを Spectral Raised Cosine に設定した場合に適用されます。

RolloffFactor

スペクトル レイズド コサイン パルスのロールオフ係数

スペクトル レイズド コサイン パルスのロールオフ係数を指定します。この値は、変調器が入力変調信号をパルス整形するために使用した値です。既定の設定は 0.2 です。このプロパティは、0 から 1 までの実数スカラーを必要とします。このプロパティは、FrequencyPulse プロパティを Spectral Raised Cosine に設定した場合に適用されます。

BandwidthTimeProduct

ガウス パルスの帯域幅とシンボル時間の積

ガウス パルス整形の帯域幅とシンボル時間の積を指定します。この値は、変調器が入力変調信号をパルス整形するために使用した値です。既定の設定は 0.3 です。このプロパティは、実数、正のスカラーを必要とします。このプロパティは、FrequencyPulse プロパティを Gaussian に設定した場合に適用されます。

PulseLength

パルス長

シンボル区間における周波数パルス整形の長さを指定します。このプロパティの値は、実数の正の整数であることが必要です。既定の設定は 1 です。

SymbolPrehistory

シンボル プレヒストリ

step メソッドへの最初の呼び出しの前に変調器によって使用されるデータ シンボルを指定します。既定の設定は 1 です。このプロパティは、–(ModulationOrder–1) から (ModulationOrder–1) までの奇数の整数要素によるスカラーまたはベクトルの値を必要とします。値がベクトルの場合、PulseLength プロパティの値より小さい長さでなくてはなりません。

InitialPhaseOffset

初期位相オフセット

入力変調波形の初期位相オフセットをラジアン単位の実数の数値スカラーで指定します。既定の設定は 0 です。

SamplesPerSymbol

入力シンボルあたりのサンプル数

入力シンボルごとの予想サンプル数を正の整数スカラーで指定します。既定の設定は 8 です。

TracebackDepth

ビタビ アルゴリズムのトレースバック長

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

OutputDataType

出力のデータ型

BitOutput プロパティを false に設定する場合、出力データ型を int8int16int32 または double のいずれかに指定します。BitOutput プロパティを true に設定する場合、出力データ型を logical または double のいずれかに指定します。既定の設定は double です。

メソッド

resetCPM 復調器オブジェクトの状態のリセット
stepCPM 法とビタビ アルゴリズムを使用した復調
すべての System object に共通
release

System object のプロパティ値の変更の許可

すべて折りたたむ

% Create a CPM modulator, an AWGN channel, and a CPM demodulator. 
    hMod = comm.CPMModulator(8, 'BitInput', true, ...
                         'SymbolMapping', 'Gray');
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                         'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.CPMDemodulator(8, 'BitOutput', true, ...
                         'SymbolMapping', 'Gray');
% Create an error rate calculator, account for the delay caused by the Viterbi algorithm.
    delay = log2(hDemod.ModulationOrder)*hDemod.TracebackDepth;
    hError = comm.ErrorRate('ReceiveDelay', delay);
    for counter = 1:100
        % Transmit 100 3-bit words
        data = randi([0 1],300,1);
        modSignal = step(hMod, data);
        noisySignal = step(hAWGN, modSignal);
        receivedData = step(hDemod, noisySignal);
        errorStats = step(hError, data, receivedData);
    end
    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.004006
Number of errors = 120

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)

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

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

アルゴリズム

このオブジェクトは、CPM Demodulator Baseband ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。CPM の場合、シンボルごとの位相シフトは、π × h です。h は変調指数です。

拡張機能

R2012a で導入