comm.OFDMModulator
OFDM 法を使用した変調
説明
comm.OFDMModulator System object™ は、直交周波数分割多重 (OFDM) 法を使用して周波数領域信号を変調します。詳細については、直交周波数分割多重を参照してください。出力は、OFDM 変調信号のベースバンド表現です。
OFDM を使用した信号は次により変調します。
comm.OFDMModulatorオブジェクトを作成し、そのプロパティを設定します。関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の機能の詳細については、System object とはを参照してください。
作成
構文
説明
は、OFDM 変調器 System object を作成します。ofdmMod = comm.OFDMModulator
は、名前と値の引数を 1 つ以上使用してプロパティを指定します。たとえば、ofdmMod = comm.OFDMModulator(Name=Value)comm.OFDMModulator(NumSymbols=8) は時間周波数グリッドで 8 つの OFDM シンボルを指定します。
は、指定されたofdmMod = comm.OFDMModulator(ofdmDemod)comm.OFDMDemodulator オブジェクトに基づいて、OFDM 変調器オブジェクトのプロパティを設定します。
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。
プロパティが "調整可能" の場合、その値をいつでも変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
FFT 点の数。正の整数スカラーとして指定します。FFT の長さは、8 以上で、かつサブキャリアの数と等しくなければなりません。
左右のガード バンドに割り当てられるサブキャリアの数。2 行 1 列の整数ベクトルとして指定します。左右のガードバンド サブキャリアの数 [NleftG; NrightG] は、[0,⌊NFFT / 2 ⌋ − 1] の範囲内でなければなりません。ここで、NFFT は、OFDM 信号に含まれるサブキャリアの総数で、FFTLength によって指定されます。詳細については、サブキャリアの割り当て、ガード バンド、およびガード インターバルを参照してください。
null DC サブキャリアを挿入するオプション。数値または logical を使用して、0 (false) または 1 (true) として指定します。挿入した null DC サブキャリアは、周波数帯域の中心に配置され、次のインデックス値をもちます。
NFFT が偶数の場合、(NFFT / 2) + 1。
NFFT が奇数の場合、(NFFT + 1) / 2。
NFFT は、OFDM 信号に含まれるサブキャリアの総数で、FFTLength によって指定されます。
パイロット サブキャリアを入力するオプション。数値または logical を使用して、0 (false) または 1 (true) として指定します。このプロパティを設定する場合、次のようになります。
false— 入力データXにパイロット情報が組み込まれますが、パイロット サブキャリアのインデックスは割り当てられません。true— オブジェクトは、入力引数pilotで指定された位置にあるパイロット信号を変調するため、PilotCarrierIndicesで指定されたサブキャリアを割り当てます。
パイロット サブキャリアの位置を表すインデックス。次の範囲の整数要素値から成る列ベクトル、行列、または 3 次元配列として指定します。
ここで、NFFT はサブキャリアの総数で、FFTLength によって指定されます。また、NleftG と NrightG は左右のガード バンドで、NumGuardBandCarriers によって指定されます。
NPilot 個のパイロット キャリア インデックスを、各シンボルについて同じサブキャリアに割り当てることも、NSym 個の異なるサブキャリアに割り当てることもできます。また、このインデックスを NStreams 個の送信ストリームに割り当てることができます。
パイロット インデックスがすべてのシンボルと送信ストリームで同じ場合、プロパティの次元は NPilot-by-1 になります。
パイロット インデックスがシンボルによって異なる場合、プロパティの次元は NPilot-by-NSym になります。
入力
pilotに含まれるシンボルは 1 つだけだが、オブジェクトの構成では複数の送信ストリームが割り当てられている場合、プロパティの次元は NPilot-by-1-by-NStreams になります。インデックスがシンボルの数と送信ストリームの数で異なる場合、プロパティの次元は NPilot-by-NSym-by-NStreams となります。
ヒント
複数の送信ストリームによる送信間の干渉を最小限にするため、各シンボルに割り当てるパイロット インデックスをストリーム間で一意にしなければなりません。
依存関係
このプロパティは、PilotInputPort を 1 に設定した場合に適用されます。
各 OFDM シンボルのサイクリック プレフィックス長。正の整数スカラー、または NumSymbols 個の要素から成る行ベクトルとして指定します。サイクリック プレフィックス長は、[0, NFFT] の範囲内でなければなりません。ここで、NFFT は、OFDM 信号に含まれるサブキャリアの総数で、FFTLength によって指定されます。サイクリック プレフィックス長を指定する場合、次のようになります。
スカラー — サイクリック プレフィックス長はすべてのストリームのすべてのシンボルで同じになります。
行ベクトル — サイクリック プレフィックス長をシンボルごとに変えることができますが、ストリームごとに変えることはできません。
OFDM シンボル間にレイズド コサイン ウィンドウ処理を適用するオプション。数値または logical を使用して、0 (false) または 1 (true) として指定します。
スペクトル再成長によって生じる帯域外サブキャリアの強度を弱めるには、ウィンドウ処理を適用します。詳細については、OFDM レイズド コサイン ウィンドウ処理を参照してください。
レイズド コサイン ウィンドウの長さ。正の整数スカラーとして指定します。この値は、CyclicPrefixLength で指定される最小サイクリック プレフィックス長以下でなければなりません。たとえば、サイクリック プレフィックス長が 12、14、16 および 18 である 4 つのシンボルの構成の場合、ウィンドウの長さは 12 以下でなければなりません。
依存関係
このプロパティを有効にするには、Windowing プロパティを true に設定します。
オーバーサンプリング係数。正のスカラーとして指定します。オーバーサンプリング係数は次の制約を満たさなければなりません。
(
OversamplingFactor×FFTLength) は整数値でなければならない。(
OversamplingFactor×CyclicPrefixLength) は整数値でなければならない。Windowingをtrueに設定した場合、(OversamplingFactor×WindowLength) は整数値でなければならない。
ヒント
オーバーサンプリング係数を整数ではない有理数に設定する場合は、小数値ではなく分数値を指定します。たとえば、FFT 長が 12 で、オーバーサンプリング係数が 4/3 の場合、その積は整数の 16 となります。しかし、オーバーサンプリング係数の設定時に 4/3 を 1.333 に丸めると、その積が非整数の 15.9960 になり、このコードはエラーとなります。
時間周波数グリッド内の OFDM シンボルの数。正の整数スカラーとして指定します。
OFDM 変調信号の送信に使用される送信ストリームの数。64 以下の正の整数スカラーとして指定します。この値は送信アンテナの物理的な数以下でなければなりません。
使用法
説明
は、Y = ofdmMod(data,pilot)PilotCarrierIndices で指定された周波数サブキャリアにパイロット信号 pilot を割り当てます。この構文を有効にするには、PilotInputPort プロパティを true に設定します。
入力引数
入力ベースバンド信号。NDataSC-by-NSym-by-NStreams の配列として指定します。
NDataSC はデータ サブキャリアの数。詳細については、オブジェクト関数
infoを参照してください。NSym はシンボルの数です。
NumSymbolsによって指定されます。NStreams は送信ストリームの数です。
NumTransmitAntennnasによって指定されます。送信アンテナの物理的な数以下でなければなりません。
詳細については、サブキャリアの割り当て、ガード バンド、およびガード インターバルを参照してください。
データ型: double | single
複素数のサポート: あり
パイロット信号。NPilot×NSym×NStreams の配列として指定します。
NPilot は各シンボルのパイロット サブキャリアの数です。
size(によって指定されます。PilotCarrierIndices,1)NSym は OFDM シンボルの数です。
NumSymbolsによって指定されます。NStreams は送信ストリームの数です。
NumTransmitAntennnasによって指定されます。送信アンテナの物理的な数以下でなければなりません。
詳細については、サブキャリアの割り当て、ガード バンド、およびガード インターバルを参照してください。
データ型: double | single
複素数のサポート: あり
出力引数
OFDM 変調されたベースバンド信号。入力信号と同じデータ型の (osf × NOut)-by-NStreams の行列として返されます。
osf は、
OversamplingFactorによって決定されるオーバーサンプリング係数です。CyclicPrefixLengthがスカラーである場合、NCP =CyclicPrefixLengthおよび NOut = NSym × (NFFT + NCP) です。CyclicPrefixLengthが行ベクトルである場合、NCPTotal =sum(CyclicPrefixLength) および NOut = (NSym × NFFT) + NCPTotal です。NSym はシンボルの数で、
NumSymbolsによって決定されます。NFFT はサブキャリアの数で、
FFTLengthによって決定されます。NStreams は送信ストリームの数で、
NumTransmitAntennnasによって決定されます。送信アンテナの物理的な数以下でなければなりません。
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
例
既定のプロパティ値を使用して OFDM 変調器 System object™ を作成および表示します。
ofdmMod = comm.OFDMModulator
ofdmMod =
comm.OFDMModulator with properties:
FFTLength: 64
NumGuardBandCarriers: [2×1 double]
InsertDCNull: false
PilotInputPort: false
CyclicPrefixLength: 16
Windowing: false
OversamplingFactor: 1
NumSymbols: 1
NumTransmitAntennas: 1
サブキャリアとシンボルの数を変更します。サブキャリアの数とシンボルの数が変更されたことを確認します。オブジェクト関数infoを使用して、入力信号と出力信号の次元を表示します。
ofdmMod.FFTLength = 128; ofdmMod.NumSymbols = 2
ofdmMod =
comm.OFDMModulator with properties:
FFTLength: 128
NumGuardBandCarriers: [2×1 double]
InsertDCNull: false
PilotInputPort: false
CyclicPrefixLength: 16
Windowing: false
OversamplingFactor: 1
NumSymbols: 2
NumTransmitAntennas: 1
info(ofdmMod)
ans = struct with fields:
DataInputSize: [117 2]
OutputSize: [288 1]
オブジェクト関数showResourceMappingを使用して、時間周波数空間におけるデータ、パイロット、および null の各サブキャリアのマッピングを示します。
showResourceMapping(ofdmMod)

オブジェクトを更新します。つまり、DC null を追加し、パイロット入力引数を有効にします。更新後のオブジェクトの構成を表示します。オブジェクト関数 showResourceMapping を使用して、更新後のリソース マッピングを表示します。オブジェクト関数 info を使用して、更新後の入力信号と出力信号の次元を表示します。更新後の入力と出力の次元を見ると、オブジェクトの構成が変更されていることがわかります。特に、オブジェクト実行時にパイロット サブキャリアを与えなければならないことがわかります。
ofdmMod.InsertDCNull = 1; ofdmMod.PilotInputPort = 1
ofdmMod =
comm.OFDMModulator with properties:
FFTLength: 128
NumGuardBandCarriers: [2×1 double]
InsertDCNull: true
PilotInputPort: true
PilotCarrierIndices: [4×1 double]
CyclicPrefixLength: 16
Windowing: false
OversamplingFactor: 1
NumSymbols: 2
NumTransmitAntennas: 1
info(ofdmMod)
ans = struct with fields:
DataInputSize: [112 2]
PilotInputSize: [4 2]
OutputSize: [288 1]
showResourceMapping(ofdmMod)

構成済みの復調器を使用して変調器を作成することで、変調器と復調器のペアを必ず整合させることができます。
既定のプロパティ値を使用して OFDM 復調器 System object™ を作成します。次に、1 つの信号シンボルと 2 つの送信アンテナに対してパイロット インデックスを指定します。変調器の作成で復調器を使用する場合、復調器の PilotCarrierIndices プロパティの設定は、OFDM 変調器における送信アンテナの数に影響します。復調器の受信アンテナの数は送信アンテナの数と相関しません。
ofdmDemod = comm.OFDMDemodulator;
ofdmDemod.PilotOutputPort = true;
ofdmDemod.PilotCarrierIndices = ...
cat(3,[12; 26; 40; 54],[13; 27; 41; 55]);OFDM 復調器を使用して OFDM 変調器を作成します。
ofdmMod = comm.OFDMModulator(ofdmDemod);
OFDM 変調器と OFDM 復調器のプロパティを表示し、適用可能なプロパティが一致するか確認します。
disp(ofdmMod)
comm.OFDMModulator with properties:
FFTLength: 64
NumGuardBandCarriers: [2×1 double]
InsertDCNull: false
PilotInputPort: true
PilotCarrierIndices: [4×1×2 double]
CyclicPrefixLength: 16
Windowing: false
OversamplingFactor: 1
NumSymbols: 1
NumTransmitAntennas: 2
disp(ofdmDemod)
comm.OFDMDemodulator with properties:
FFTLength: 64
NumGuardBandCarriers: [2×1 double]
RemoveDCCarrier: false
PilotOutputPort: true
PilotCarrierIndices: [4×1×2 double]
CyclicPrefixLength: 16
OversamplingFactor: 1
NumSymbols: 1
NumReceiveAntennas: 1
オブジェクト関数showResourceMappingは、送信アンテナごとの時間周波数リソース マッピングを表示します。
OFDM 変調器を作成します。
ofdmMod = comm.OFDMModulator;
オブジェクト関数 showResourceMapping を適用します。
showResourceMapping(ofdmMod)

DC null を挿入します。
ofdmMod.InsertDCNull = true;
DC null を追加した後のリソース マッピングを表示します。
showResourceMapping(ofdmMod)

OFDM 変調器を作成して、パイロット信号のサブキャリア インデックスを指定します。シンボルおよび送信アンテナごとにインデックスを指定します。送信アンテナの数が複数の場合は、シンボルごとのパイロット インデックスがアンテナ間で異なるように設定します。
2 つのシンボルを指定し、DC null を挿入して、OFDM 変調器オブジェクトを作成します。
ofdmMod = comm.OFDMModulator( ... FFTLength=128, ... NumSymbols=2, ... InsertDCNull=true);
パイロット インデックスを指定できるようにするため、パイロット入力端子を有効にします。
ofdmMod.PilotInputPort = true;
両方のシンボルに同じパイロット インデックスを指定します。
ofdmMod.PilotCarrierIndices = [12; 56; 89; 100];
オブジェクト関数showResourceMappingを使用して、パイロット信号と null 値の配置を OFDM 時間周波数グリッドで表示します。
showResourceMapping(ofdmMod)

パイロット インデックスの 2 番目の列を PilotCarrierIndices プロパティに連結して、2 番目のシンボルに別のインデックスを指定します。
ofdmMod.PilotCarrierIndices = ...
cat(2,ofdmMod.PilotCarrierIndices,[17; 61; 94; 105]);パイロット サブキャリア インデックスが 2 つのシンボル間で異なることを確認します。
showResourceMapping(ofdmMod)

送信アンテナの数を 2 に増やします。
ofdmMod.NumTransmitAntennas = 2;
2 つの送信アンテナのそれぞれについてパイロット インデックスを指定します。アンテナ間の干渉を最小限にしながら複数のアンテナのインデックスを指定するには、各シンボルのインデックスがアンテナ間で重複しないように PilotCarrierIndices プロパティを 3 次元配列として指定します。
ofdmMod.PilotCarrierIndices = ...
cat(3,[20; 50; 70; 110],[15; 60; 75; 105]);2 つの送信アンテナのリソース マッピングを表示します。グレイの線は、カスタム null の挿入を示しています。異なるアンテナからのパイロット シンボル間の干渉を最小限にするため、オブジェクトによって null が作成されます。
showResourceMapping(ofdmMod)


各 OFDM シンボルのサイクリック プレフィックス長を指定します。
5 つのシンボル、4 つ左保護帯域のサブキャリア、3 つの右保護帯域のサブキャリア、および各 OFDM シンボルのサイクリック プレフィックス長を指定して、OFDM 変調器を作成します。
ofdmMod = comm.OFDMModulator( ... NumGuardBandCarriers=[4;3], ... NumSymbols=5, ... CyclicPrefixLength=[12 10 14 11 13]);
OFDM 変調器のプロパティを表示し、構成したサイクリック プレフィックス長がシンボル間で異なることを確認します。
disp(ofdmMod)
comm.OFDMModulator with properties:
FFTLength: 64
NumGuardBandCarriers: [2×1 double]
InsertDCNull: false
PilotInputPort: false
CyclicPrefixLength: [12 10 14 11 13]
Windowing: false
OversamplingFactor: 1
NumSymbols: 5
NumTransmitAntennas: 1
オブジェクト関数 info を使用して OFDM 変調器のデータ次元を取得します。
パイロット インデックス、DC null、2 つの送信アンテナをもつ OFDM 変調器オブジェクトを作成します。
ofdmMod = comm.OFDMModulator( ... NumGuardBandCarriers=[4; 3], ... PilotInputPort=true, ... PilotCarrierIndices=cat(3,[12; 26; 40; 54],[11; 25; 39; 53]), ... InsertDCNull=true, ... NumTransmitAntennas=2);
オブジェクト関数infoを使用して、変調器の入力データ、パイロット入力データ、および出力データのサイズを取得します。
info(ofdmMod)
ans = struct with fields:
DataInputSize: [48 1 2]
PilotInputSize: [4 1 2]
OutputSize: [80 2]
リンクレベルのシミュレーションで使用する OFDM 変調シンボルを生成します。
DC null が挿入され、保護帯域のサブキャリアが 7 つ、パイロット インデックスが異なるシンボルが 2 つある OFDM 変調器を構築します。
ofdmMod = comm.OFDMModulator( ... NumGuardBandCarriers=[4;3], ... PilotInputPort=true, ... PilotCarrierIndices=[12 11; 26 27; 40 39; 54 55], ... NumSymbols=2, ... InsertDCNull=true);
入力データ、パイロットおよび出力データの次元を決定します。
modDim = info(ofdmMod);
OFDM 変調器のランダム データ シンボルを生成します。構造体変数 modDim によってデータ シンボルの数が決定されます。
dataIn = complex( ...
randn(modDim.DataInputSize),randn(modDim.DataInputSize));正しい次元をもつパイロット信号を作成します。
pilotIn = complex( ...
rand(modDim.PilotInputSize),rand(modDim.PilotInputSize));OFDM 変調をデータ信号とパイロット信号に適用します。
modData = ofdmMod(dataIn,pilotIn);
OFDM 変調器オブジェクトを使用して、対応する OFDM 復調器を作成します。
ofdmDemod = comm.OFDMDemodulator(ofdmMod);
OFDM 信号を復調し、データ信号とパイロット信号を出力します。
[dataOut, pilotOut] = ofdmDemod(modData);
狭い許容誤差内で、入力データ シンボルおよび入力パイロット シンボルが出力データ シンボルおよび出力パイロット シンボルと一致することを確認します。
isSame = (max(abs([dataIn(:) - dataOut(:); ...
pilotIn(:) - pilotOut(:)])) < 1e-10)isSame = logical
1
4 倍のサンプル レートで生成されたデータおよびパイロットの入出力の OFDM 変調信号を、単入力単出力 (SISO) チャネルを通してフィルター処理します。チャネルでフィルター処理した信号を復調し、元の信号と比較します。
3 つのシンボルをもち、シンボルごとに異なるパイロット サブキャリア インデックスとサイクリック プレフィックス長が設定された OFDM 復調器オブジェクトを作成します。
ofdmDemod = comm.OFDMDemodulator( ... NumGuardBandCarriers=[9;8], ... RemoveDCCarrier=true, ... PilotOutputPort=true, ... PilotCarrierIndices=[[12;26;40;54],[14;28;38;52],[12;26;40;54]], ... CyclicPrefixLength=[16 32 16], ... OversamplingFactor=4, ... NumSymbols=3);
OFDM 変調器 System object を OFDM 復調器オブジェクト ofdmDemod から作成します。
ofdmMod = comm.OFDMModulator(ofdmDemod);
オブジェクト関数showResourceMappingを使用して、データ、パイロット、ガード バンド、および null 信号について構成されたサブキャリア リソースのマッピングを表示します。オブジェクト関数infoを使用して、入力と出力の次元情報を取得します。
showResourceMapping(ofdmDemod);

modDim = info(ofdmMod);
ランダム データとパイロットの入力を作成し、QAM 変調を適用します。
M = 16; xd = randi([0 M-1],modDim.DataInputSize); dataIn = qammod(xd,M,UnitAveragePower=true); xp = randi([0 M-1],modDim.PilotInputSize); pilotIn = qammod(xp,M,UnitAveragePower=true);
データとパイロットの QAM 信号に対し、OFDM 変調を適用します。AWGN チャネルを通して信号をフィルター処理します。データとパイロットのシンボルを復元するため、OFDM 復調を適用してから QAM 復調を適用します。
modOut = ofdmMod(dataIn,pilotIn);
chanOut = awgn(modOut,20,"measured");
[dataOut, pilotOut] = ofdmDemod(chanOut);
yd = qamdemod(dataOut,M,UnitAveragePower=true);
yp = qamdemod(pilotOut,M,UnitAveragePower=true);この処理によってデータとパイロットが変わっていないことを確認します。
dataSame = isequal(xd,yd)
dataSame = logical
1
pilotSame = isequal(xp,yp)
pilotSame = logical
1
アルゴリズム
OFDM は、マルチキャリア変調スキームのクラスに属しています。この演算では複数のキャリアを同時に送信できるため、単一キャリアの変調と比べて OFDM に与えるノイズの影響は小さくなります。
OFDM 演算は、送信周波数帯を個別に変調された複数の連続するサブキャリアに分解して、高レートのデータ ストリームを低レートのデータ サブストリームに分割します。この一連の並列で直交するサブキャリアは、広帯域チャネルとほぼ同じ帯域幅を占有するデータ ストリームを伝送します。狭帯域の直交サブキャリアを使用して、OFDM 信号は周波数選択性フェージング チャネルでロバスト性を獲得し、隣接サブキャリアの干渉を排除します。低データ レートのサブストリームはチャネル遅延拡散よりシンボル区間が大きいため、符号間干渉 (ISI) が低減されます。
次のイメージは、OFDM 波形における直交サブキャリアの周波数領域表現を示したものです。

送信機は、逆高速フーリエ変換 (IFFT) を一度に N 個のシンボルに適用します。通常、IFFT の出力は、N 個の直交正弦波の和です。
ここで、{Xk} はデータ シンボル、および T は OFDM シンボル時間です。データ シンボル Xk は通常複素数で、任意のデジタル変調アルファベット (QPSK、16-QAM、64-QAM など) に基づくものになります。
メモ
離散フーリエ変換の MATLAB® 実装では、IFFT の出力が 1/N で正規化されます。詳細については、ifft リファレンス ページのベクトルの離散フーリエ変換を参照してください。
サブキャリア間隔は Δf = 1/T で、サブキャリアはシンボル周期ごとに必ず直交します。
OFDM 変調器は、シリアルからパラレルへの変換で構成され、それぞれが各 OFDM サブキャリアに対応する一連の N 個の複素数変調器が続きます。

個々の OFDM サブキャリアは、データ、パイロット、または null サブキャリアとして割り当てられます。
以下に示すように、サブキャリアは、データ サブキャリア、DC サブキャリア、パイロット サブキャリア、またはガードバンド サブキャリアとして指定されています。

データ サブキャリアは、ユーザー データを送信します。
パイロット サブキャリアは、チャネル推定に使用されます。
null サブキャリアは、データを送信しません。データをもたないサブキャリアは、DC null を提供し、OFDM リソース ブロック間のバッファーとして機能します。
null DC サブキャリアは、周波数帯域の中心であり、
nfftが偶数の場合は (nfft/2 + 1)、nfftが奇数の場合は ((nfft+ 1) / 2) のインデックス値をもちます。ガード バンドでは、隣り合う帯域内の隣接する信号間にバッファーを提供することで、スペクトル漏れによって発生する干渉を低減します。
null サブキャリアでは、さまざまな 802.11 形式や LTE、WiMAX などの特定の規格またはカスタム割り当ての保護帯域と DC サブキャリアの位置をモデル化できます。null サブキャリア インデックスのベクトルを割り当てることで、null の位置を割り当てることができます。
ガード インターバルは、ガード バンドと同様に、符号間干渉を低減して OFDM 送信信号の整合性を確保します。
保護間隔の割り当ては、保護帯域の割り当てに似ています。保護間隔をモデル化して、OFDM シンボル間に時間的な区切りを設けることができます。保護間隔は、時間分散チャネルを介して信号を渡した後にシンボル間の直交性を保持するうえで役立ちます。ガード インターバルを作成するには、サイクリック プレフィックスを使用します。サイクリック プレフィックスの挿入では、OFDM シンボルの最後部が次の OFDM シンボルの最前部としてコピーされます。

サイクリック プレフィックスの挿入が OFDM に与える効果は、時間分散のスパンがサイクリック プレフィックスの期間を超えない限り有効です。
サイクリック プレフィックスはデータ送信に使用される可能性のある帯域幅を占めるため、サイクリック プレフィックスの挿入によりユーザー データのスループットがわずかに低下します。
OFDM レイズド コサイン ウィンドウ処理は、スペクトル再成長を制限するため、[3]に記載されている手法を適用し、あるシンボルの最後のサンプルから次のシンボルの最初のサンプルへの円滑な移行を実現します。
サイクリック プレフィックスは時間領域で保護期間を作成して直交性を保持しますが、OFDM シンボルの場合、直前の OFDM シンボルの最後に示された振幅と位相で開始されることはほとんどありません。これによりスペクトル再成長が発生し、そのため相互変調歪みによる信号帯域幅の拡散が発生します。このスペクトル再成長を制限するには、巡回サフィックスとレイズド コサイン ウィンドウ処理を使用して、あるシンボルの最後のサンプルから次のシンボルの最初のサンプルへの円滑な移行を実現します。
このセクションの説明と図では、オーバーサンプリング係数が 1 であると仮定しています。この演算は、サイクリック サフィックスを作成するため、あるシンボルの最初の NWIN 個のサンプルをそのシンボルの最後に付加します。ただし、この演算では、IEEE® 802.11g 規格に準拠するため、シンボル長を任意に延長するといったことはできません。逆に、巡回サフィックスは時間的にオーバーラップしなければならず、次のシンボルのサイクリック プレフィックスと実質的に合計されます。この演算は、数学的に逆の関係にある 2 つのウィンドウを、このオーバーラップしたセグメントに適用します。1 つ目のレイズド コサイン ウィンドウは、k 番目のシンボルの巡回サフィックスに適用され、区間中に 1 から 0 へと減少します。2 つ目のレイズド コサイン ウィンドウは、k+1 番目のシンボルのサイクリック プレフィックスに適用され、区間中に 0 から 1 へと増加します。このプロセスによって、あるシンボルから次のシンボルへの円滑な移行が実現します。
時間領域におけるレイズド コサイン ウィンドウ w(t) は、次の式で表すことができます。
ここで、
T は、保護間隔を含む OFDM シンボル区間です。
TW はウィンドウの間隔です。
ウィンドウの長さを設定することにより、巡回サフィックスの長さを調整します。サフィックスの長さは、1 から最小サイクリック プレフィックス長までの範囲内に設定します。ウィンドウ処理によってスペクトル再成長が緩和されますが、シンボル間の移行を円滑にするにはガード バンドのサンプル値を変更する必要があり、これによってガード バンドの冗長性が低下するため、マルチパス フェージング耐性が低下します。

参照
[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] Agilent Technologies, Inc., "OFDM Raised Cosine Windowing", https://helpfiles.keysight.com/csg/n7617/Content/Main/ofdm_raised_cosine_windowing.htm.
[4] Montreuil, L., R. Prodan, and T. Kolze. "OFDM TX Symbol Shaping 802.3bn", https://www.ieee802.org/3/bn/public/jan13/montreuil_01a_0113.pdf. Broadcom, 2013.
[5] IEEE Standard 802.16-2017. "Part 16: Air Interface for Broadband Wireless Access Systems." March 2018.
拡張機能
使用上の注意および制限:
MATLAB コード生成における System object (MATLAB Coder)を参照してください。
バージョン履歴
R2014a で導入入力信号が single 型だった場合、オブジェクトによる計算は単精度でネイティブに行われ、返される出力も single 型になります。
comm.OFDMModulator は、オーバーサンプリングをサポートするようになりました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)