Main Content

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

comm.MSKDemodulator

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

説明

comm.MSKDemodulator オブジェクトは、最小シフト キーイング法を用いて変調された信号を復調します。このオブジェクトは、入力信号が、プリコーディングなしの同期変調信号のベースバンド表現になることを予期します。Initial phase offset プロパティは、変調された波形の初期位相を設定します。

最小シフト キーイングを使用して変調された信号を復調するには、以下の手順に従います。

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

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

メモ

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

構築

H = comm.MSKDemodulator は復調器 System object H を作成します。このオブジェクトは、入力最小シフト キーイング (MSK) 法で変調されたデータを、ビタビ アルゴリズムを使用して復調します。

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

プロパティ

BitOutput

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

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

このプロパティを false に設定した場合、step メソッドは、長さが N/SamplesPerSymbol の列ベクトルを出力します。ここで N は入力信号の長さを示し、これは入力ベースバンド変調シンボルの数です。出力ベクトルの要素は -1 または 1 です。

BitOutput プロパティを true に設定した場合、step メソッドは、長さが N/SamplesPerSymbol のバイナリ列ベクトルを出力します。ベクトルの要素はビット値の 0 または 1 です。

InitialPhaseOffset

初期位相オフセット

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

SamplesPerSymbol

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

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

TracebackDepth

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

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

OutputDataType

出力のデータ型

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

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

メソッド

stepMSK 法とビタビ アルゴリズムを使用した復調
すべての System object に共通
release

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

reset

System object の内部状態をリセットします。

すべて折りたたむ

% Create an MSK modulator, an AWGN channel, and an MSK demodulator.  Use a
% phase offset of pi/4.
 hMod = comm.MSKModulator('BitInput', true, ...
                    'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.MSKDemodulator('BitOutput', true, ...
                    'InitialPhaseOffset', pi/4);
 % Create an error rate calculator, account for the delay caused by the Viterbi algorithm
    hError = comm.ErrorRate('ReceiveDelay', hDemod.TracebackDepth);
    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.000000
Number of errors = 0

この例では、0 と 1 の 2 進シーケンスを GMSK 変調器の出力にマッピングする方法を説明します。この関係は MSK 変調にも適用されます。

バイナリ入力を受け入れる GMSK 変調器を作成します。パルス長とシンボルあたりのサンプル数を 1 に指定します。

gmsk = comm.GMSKModulator('BitInput',true,'PulseLength',1,'SamplesPerSymbol',1);

すべて 0 の入力シーケンスを作成します。シーケンスを変調します。

x = zeros(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 - 1.0000i
  -1.0000 + 0.0000i
   0.0000 + 1.0000i
   1.0000 - 0.0000i

各点の位相角を決定します。関数 unwrap を使用してトレンドをより適切に表示します。

theta = unwrap(angle(y))
theta = 5×1

         0
   -1.5708
   -3.1416
   -4.7124
   -6.2832

0 のシーケンスにより、サンプル間で位相が -π/2 シフトします。

変調器をリセットします。すべて 1 の入力シーケンスを変調します。

reset(gmsk)
x = ones(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 + 1.0000i
  -1.0000 - 0.0000i
   0.0000 - 1.0000i
   1.0000 + 0.0000i

各点の位相角を決定します。関数 unwrap を使用してトレンドをより適切に表示します。

theta = unwrap(angle(y))
theta = 5×1

         0
    1.5708
    3.1416
    4.7124
    6.2832

1 のシーケンスにより、サンプル間で位相が +π/2 シフトします。

アルゴリズム

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

拡張機能

R2012a で導入