Main Content

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

comm.CPMModulator

CPM 法を使用した変調

説明

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

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

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

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

メモ

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

構築

H = comm.CPMModulator は変調器 System object H を作成します。このオブジェクトは、連続位相変調 (CPM) メソッドを使用して入力信号を変調します。

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

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

プロパティ

ModulationOrder

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

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

BitInput

ビット入力を想定する

入力がビットか整数かを指定します。既定の設定は false です。

このプロパティを false に設定した場合、step メソッド入力は、倍精度または符号付き整数データ型列ベクトルである必要があります。このベクトルは、–(ModulationOrder–1) から ModulationOrder–1 までの奇数の整数値を構成しなければなりません。

このプロパティを true に設定すると、step メソッド入力は長さ P のビット ワードの列ベクトルである必要があります。ここで、P = log2(ModulationOrder) です。入力データは、倍精度または論理データ型でなければなりません。オブジェクトは、SymbolMapping プロパティで指定されたマッピングを使用して、0 から ModulationOrder–1 までの整数 K に各ビット ワードをマップします。次に、オブジェクトは整数 K を中間値 2K-(ModulationOrder–1) にマップし、BitInput が false である場合と同様に次に進みます。

SymbolMapping

シンボルの符号化

ビット入力のマッピングを Binary または Gray のいずれかに指定します。既定の設定は Binary です。このプロパティは、各入力 P-長ビット ワード (P = log2(ModulationOrder)) を 0 から ModulationOrder–1 までの整数にマップする方法を決定します。

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

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

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

ModulationIndex

変調指数

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

ここで、H-1 は列ベクトルの長さです。シンボル上の位相シフトは、π × h です。

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 です。アップサンプリング係数は、各入力サンプルに対して step メソッドが生成する出力サンプルの数です。

OutputDataType

出力のデータ型

出力データ型を double または single のいずれかとして指定します。既定の設定は 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 Modulator Baseband ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。CPM の場合、シンボルごとの位相シフトは、π × h です。h は変調指数です。

拡張機能

R2012a で導入