Main Content

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

comm.OFDMDemodulator

OFDM 法を使用した復調

説明

OFDMDemodulator オブジェクトは、直交周波数分割復調法を使用して復調します。出力は変調信号のベースバンド表現で、対になるオブジェクト OFDMModulator に入力されたものです。

OFDM 信号を復調するには、以下の手順に従います。

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

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

メモ

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

構築

H = comm.OFDMDemodulator は、直交周波数分割復調法を使用して入力信号を変調する復調器 System object H を作成します。

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

H = comm.OFDMDemodulator(hMod) は、OFDM 復調器オブジェクト H を作成します。このオブジェクトのプロパティは対応する OFDM 変調器オブジェクト hMod によって決まります。

プロパティ

FFTLength

FFT の長さ NFFT は、変調処理で使用される副搬送波の数と等しくなります。FFTLength は 8 以上でなければなりません。

副搬送波の数を指定します。既定の設定は 64 です。

NumGuardBandCarriers

左右の保護帯域に割り当てられる保護帯域の副搬送波の数。

左右の副搬送波の数は [0,NFFT/21] の範囲内の非負の整数で指定します。左保護帯域 NleftG と右保護帯域 NrightG を 2 行 1 列の列ベクトルで個別に指定します。既定値は [6; 5] です。

RemoveDCCarrier

true の場合に DC 副搬送波の除去を要求する logical な変数。既定値は false です。

PilotOutputPort

パイロット信号を分離して追加の出力端子で送信できるようにするかどうかを制御する logical プロパティ。各パイロット出力シンボルの位置は、PilotCarrierIndices プロパティで指定されるパイロット副搬送波インデックスによって決まります。false の場合、パイロット シンボルが存在していてもデータに埋め込まれている場合があります。既定値は false です。

PilotCarrierIndices

PilotOutputPort プロパティが true の場合、PilotCarrierIndices プロパティで指定されるインデックスの位置にある出力分離パイロット信号です。インデックスが 2 次元配列の場合、各シンボルのすべての送信アンテナでパイロット搬送波が同じになります。送信アンテナが複数ある場合 (この情報は復調器ではわかりません)、異なる送信アンテナからのパイロットが相互に干渉することがあります。これを回避するため、パイロット搬送波インデックスを、すべてのアンテナにおいてシンボルごとに異なるパイロット インデックスをもつ 3 次元配列として指定します。これにより、シンボルごとに送信アンテナのパイロット搬送波は違ったものになり、OFDM 変調器がカスタム null を適切な位置に作成するので、異なる送信アンテナからのパイロットの相互干渉を回避できます。PilotCarrierIndices プロパティの 3 次元のサイズによって、送信アンテナの数が決まります。

CyclicPrefixLength

CyclicPrefixLength プロパティは、OFDM 巡回プレフィックス長を指定します。スカラーを指定した場合、プレフィックス長はすべてのアンテナのすべてのシンボルで同じになります。長さ Nsym の行ベクトルを指定した場合、プレフィックス長はシンボルごとに変えられますが、アンテナ長はすべて同じ長さのままです。既定値は 16 です。

NumSymbols

このプロパティは、シンボルの数 Nsym を指定します。Nsym は正の整数として指定します。既定値は 1 です。

NumReceiveAntennnas

このプロパティは、OFDM 変調信号の受信に使用されるアンテナの数 NR を決定します。NR は正の整数として指定します。既定値は 1 です。

メソッド

infoOFDM 法の次元情報の提供
showResourceMappingOFDM 復調器 System object で作成される OFDM シンボルの副搬送波マッピングの表示
stepOFDM 法を使用した復調
すべての System object に共通
release

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

reset

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

reset を使用するとき、このメソッドは、前に処理されたフレーム内の最後のシンボルのウィンドウ処理されたサフィックスをリセットします。

すべて折りたたむ

既定のプロパティを使用して OFDM 復調器 System object™ を作成します。プロパティの一部を変更します。

OFDM 復調器を構築します。

demod = comm.OFDMDemodulator
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 1
      NumReceiveAntennas: 1

副搬送波とシンボルの数を変更します。

demod.FFTLength = 128;
demod.NumSymbols = 2;

副搬送波の数とシンボルの数が変更されたことを確認します。

demod
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 128
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 2
      NumReceiveAntennas: 1

OFDM 復調器 System object™ を既存の OFDM 変調器 System object から作成します。

既定のパラメーターを使用して OFDM 変調器を構築します。

mod = comm.OFDMModulator('NumTransmitAntennas',4);

変調器 mod から対応する OFDM 復調器を構築します。

demod = comm.OFDMDemodulator(mod);

変調器のプロパティを表示して、復調器のプロパティと一致することを確認します。

mod
mod = 
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 1
     NumTransmitAntennas: 4

demod
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 1
      NumReceiveAntennas: 1

送信アンテナの数は受信アンテナの数と無関係であることに注意してください。

showResourceMapping メソッドは、送信アンテナごとの時間周波数リソース マッピングを表示します。

OFDM 復調器を構築します。

demod = comm.OFDMDemodulator;

showResourceMapping メソッドを適用します。

showResourceMapping(demod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

DC 副搬送波を取り除きます。

demod.RemoveDCCarrier = true;

DC 副搬送波を取り除いた後のリソース マッピングを表示します。

showResourceMapping(demod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

DC null が挿入され、保護帯域の副搬送波が 7 つ、パイロット インデックスが異なるシンボルが 2 つある OFDM 変調器を構築します。

mod = comm.OFDMModulator('NumGuardBandCarriers',[4;3],...
'PilotInputPort',true,'PilotCarrierIndices',cat(2,[12; 26; 40; 54],...
[11; 27; 39; 55]),'NumSymbols',2,'InsertDCNull',true);

入力データ、パイロットおよび出力データの次元を決定します。

modDim = info(mod)
modDim = struct with fields:
     DataInputSize: [52 2]
    PilotInputSize: [4 2]
        OutputSize: [160 1]

OFDM 変調器のランダム データ シンボルを生成します。構造体変数 modDim を使用してデータ シンボルの数を決定します。

dataIn = complex(randn(modDim.DataInputSize),randn(modDim.DataInputSize));

正しい次元をもつパイロット信号を作成します。

pilotIn = complex(rand(modDim.PilotInputSize),rand(modDim.PilotInputSize));

OFDM 変調をデータ信号とパイロット信号に適用します。

modSig = step(mod,dataIn,pilotIn);

OFDM 変調器オブジェクトを使用して、対応する OFDM 復調器を作成します。

demod = comm.OFDMDemodulator(mod);

OFDM 信号を復調し、データ信号とパイロット信号を出力します。

[dataOut,pilotOut] = step(demod,modSig);

入力データ シンボルおよび入力パイロット シンボルが出力データ シンボルおよび出力パイロット シンボルと一致することを確認します。

isSame = (max(abs([dataIn(:) - dataOut(:); ...
    pilotIn(:) - pilotOut(:)])) < 1e-10)
isSame = logical
   1

アルゴリズム

OFDM (直交周波数分割変調、Orthogonal Frequency Division Modulation) 復調器 System object は、N 個の並列データ ストリームを提供する FFT 操作を使用して、OFDM 入力信号を復調します。

次の図は OFDM 復調器を示しています。N 個の一連の相関器から構成され、それらの相関器は後でパラレルからシリアルに変換されるそれぞれの OFDM 副搬送波に割り当てられています。

保護帯域と保護間隔

OFDM 副搬送波には 3 つのタイプがあります。データ、パイロットおよび null です。データ副搬送波はデータの送信に使用され、パイロット副搬送波はチャネル推定に使用されます。null 副搬送波では送信は行われず、これにより DC null の提供と OFDM リソース ブロック間のバッファーを実現します。これらのバッファーは保護帯域と呼ばれ、符号間干渉を防ぐことを目的としています。null と保護帯域の割り当ては、標準によって異なります (たとえば、802.11n の場合は LTE の場合とは異なります)。その結果として、この OFDM 変調器オブジェクトでは必要に応じて副搬送波インデックスを割り当てることができます。

保護帯域の概念と同様、OFDM 変調器オブジェクトは保護間隔をサポートしています。保護間隔は、信号の直交性が時間分散チャネルによって失われないよう、OFDM シンボル間に時間的な区切りを設けるために使用されます。保護間隔が遅延拡散よりも長い限り、それぞれのシンボルは他のシンボルに干渉しません。保護間隔は、サイクリック プリフィックスを使用して作成されます。サイクリック プリフィックスでは、OFDM シンボルの最後部がコピーされ、次の OFDM シンボルの最前部に挿入されます。巡回プレフィックス挿入の効果は、時間分散のスパンが巡回プレフィックスの期間を超えない限り持続します。OFDM 変調器オブジェクトによって、巡回プレフィックス長の設定が可能になります。巡回プレフィックスを使用する場合の欠点は、オーバヘッドの増加です。

参考文献

[1] Dahlman, E., S. Parkvall, and J. Skold. 4G LTE/LTE-Advanced for Mobile Broadband.London: Elsevier Ltd., 2011.

[2] Andrews, J. G., A. Ghosh, and R. Muhamed, Fundamentals of WiMAX, Upper Saddle River, NJ: Prentice Hall, 2007.

[3] I. E. E. E., “IEEE Standard 802.16TM-2009.”

拡張機能

R2014a で導入