Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.OSTBCCombiner

直交空間時間ブロック符号を使用した入力の結合

説明

comm.OSTBCCombiner System object™ は、入力信号 (すべての受信アンテナから) とチャネル推定信号を組み合わせて、直交空間時間ブロック符号 (OSTBC) によって符号化されたシンボルの軟情報を抽出します。この入力チャネル推定は定数である必要はなく、オブジェクトを実行するたびに異なっていても構いません。組み合わせアルゴリズムはコードワード ブロックごとの最初のシンボル周期に対してだけ推定を使用します。多入力多出力 (MIMO) 通信システムは、OSTBC 結合プロセスの後にシンボルの復調または復号化を適用します。

OSTBC を使用して入力シンボル シーケンスを結合するには、次のようにします。

  1. comm.OSTBCCombiner オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

ostbccomb = comm.OSTBCCombiner は、OSTBC コンバイナー System object ostbccomb を作成します。このオブジェクトは、入力信号 (すべての受信アンテナからの) とチャネル推定信号を組み合わせて、OSTBC によって符号化されたシンボルの軟情報を抽出します。

ostbccomb = comm.OSTBCCombiner(N,M) は、NumTransmitAntennas プロパティを NNumReceiveAntennas プロパティを M に設定して、OSTBC コンバイナー オブジェクトを作成します。

ostbccomb = comm.OSTBCCombiner(___,Name=Value) は、前述の任意の構文を使用して OSTBC コンバイナー オブジェクトを作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、SymbolRate=1/2 は、符号のシンボル レートを 1/2 に設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

送信アンテナの数。23、または 4 として指定します。

データ型: double

符号のシンボル レート。3/4 または 1/2 として指定します。

依存関係

このプロパティを有効にするには、NumTransmitAntennas プロパティを 2 より大きい値に設定します。NumTransmitAntennas2 に設定すると、シンボル レートは 1 になります。

データ型: double

受信アンテナ数。範囲 [1, 8] の整数として指定します。

データ型: double

固定小数点プロパティ

固定小数点数値の丸め方法。"Ceiling""Convergent""Floor""Nearest""Round""Simplest"、または "Zero" として指定します。

固定小数点数値がオーバーフローするときのアクション。"Wrap" または "Saturate" として指定します。このプロパティでオーバーフロー時に取るべき動作を指定します。オーバーフローは、固定小数点計算の大きさの結果が、その結果を格納するデータ型とスケーリングの範囲に収まらない場合に発生します。

積のデータ型。"Full precision" または "Custom" として指定します。

積の固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、ProductDataType プロパティを "Custom" に設定します。

アキュムレータのデータ型。"Full precision""Same as product"、または "Custom" として指定します。

アキュムレータの固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、AccumulatorDataType プロパティを "Custom" に設定します。

エネルギー積のデータ型。"Full precision""Same as product"、または "Custom" として指定します。このプロパティにより、MIMO チャネルの合計エネルギーを計算するための分母の複素数積のデータ型が設定されます。

エネルギー積の固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、EnergyProductDataType プロパティを "Custom" に設定します。

エネルギー アキュムレータのデータ型。"Full precision""Same as energy product""Same as accumulator"、または "Custom" として指定します。このプロパティにより、MIMO チャネルの合計エネルギーを計算するための分母の総和のデータ型が設定されます。

エネルギー アキュムレータの固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、EnergyAccumulatorDataType プロパティを "Custom" に設定します。

除算のデータ型。"Same as accumulator" または "Custom" として指定します。このプロパティは除算の出力時のデータ型を設定します。この設定で MIMO チャネルの合計エネルギーによって組み合わされた多様性が正規化されます。

除算の固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、DivisionDataType プロパティを "Custom" に設定します。

使用法

説明

Y = ostbccomb(X,cest) は、OSTBC 符号化されたデータ X とチャネル推定値 cest に OSTBC 結合を適用し、OSTBC によって符号化されたシンボルを抽出します。

入力引数

すべて展開する

受信データ。複素数値の列ベクトル、行列、または 3 次元配列として指定します (データ型は double、single、または勾配が 2 のべき乗でバイアスが 0 の符号付き固定小数点)。受信データは、T/SymbolRateNumReceiveAntennas 列の行列または F×T/SymbolRate×NumReceiveAntennas の 3 次元配列とすることができます。時間領域長 T/SymbolRate はコードワード ブロック長の倍数でなければなりません。T は時間領域の出力シンボル シーケンス長です。特に、NumTransmitAntennas プロパティを 2 に設定した場合、T/SymbolRate は 2 の倍数でなければなりません。NumTransmitAntennas プロパティを 2 より大きい値に設定した場合、T/SymbolRate は 4 の倍数でなければなりません。F は、組み合わせの計算が無関係であるオプションの次元 (通常は周波数領域) です。F は正の整数として指定します。

データ型: single | double | fi
複素数のサポート: あり

チャネル推定。複素数値の行列、3 次元配列、または 4 次元配列として指定します (データ型は double、single、または勾配が 2 のべき乗でバイアスが 0 の符号付き固定小数点)。入力チャネル信号の推定は、それぞれのコードワード ブロック伝送中、一定または変動のいずれの可能性もあります。組み合わせアルゴリズムはコードワード ブロックごとの最初のシンボル周期に対してだけ推定を使用します。受信データが T/SymbolRateNumReceiveAntennas 列の行列の場合、入力チャネル推定値 cest は、サイズ T/SymbolRate×NumTransmitAntennas×NumReceiveAntennas の 3 次元配列でなければなりません。受信データが F×T/SymbolRate×NumReceiveAntennas の 3 次元配列の場合、cest はサイズ F×T/SymbolRate×NumTransmitAntennas×NumReceiveAntennas の 4 次元配列でなければなりません。

データ型: single | double | fi
複素数のサポート: あり

出力引数

すべて展開する

出力データ。複素数値の列ベクトルまたは行列として返されます。入力 X が倍精度または単精度の場合、出力 Y は入力と同じデータ型になります。X が T/SymbolRateNumReceiveAntennas 列の行列で、cest が T/SymbolRate×NumTransmitAntennas×NumReceiveAntennas の 3 次元配列の場合、抽出されたシンボル データ Y は、T 個の要素をもつ列ベクトルになります。X が F×T.SymbolRate×NumReceiveAntennas の 3 次元配列で、cest が F×T/SymbolRate×NumTransmitAntennas×NumReceiveAntennas の 4 次元配列の場合、Y は F 行 T 列の行列になります。

データ型: single | double | fi

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
cloneSystem object の複製
isLockedSystem object が使用中かどうかの判定
resetSystem object の内部状態のリセット

すべて折りたたむ

4×2 MIMO チャネル経由で送信される場合の、OSTBC 符号化を使用する QPSK 信号のビット エラー レートを判定します。この例では、OSTBC 符号化器が完全なチャネル推定を使用していることを前提としています。

システム パラメーターを定義します。

numTx = 4;         % Number of transmit antennas
numRx = 2;         % Number of receive antennas
Rs = 1e6;          % Sampling rate (Hz)
tau = [0 2e-6];    % Path delays (sec)
pdb = [0 -10];     % Average path gains (dB)
maxDopp = 30;      % Maximum Doppler shift (Hz)
numBits = 12000;   % Number of bits
SNR = 6;           % Signal-to-noise ratio (dB)

結果が繰り返し再現されるように、乱数発生器を既定の状態に設定します。

rng default

OSTBC 符号化器とコンバイナーのペアを作成します。ここで、アンテナの数はシステム パラメーターで指定されます。

hOSTBCEnc = comm.OSTBCEncoder(...
    NumTransmitAntennas=numTx);

hOSTBCComb = comm.OSTBCCombiner(...
    NumTransmitAntennas=numTx,...
    NumReceiveAntennas=numRx);

フラットな 4×2 MIMO チャネル System object を作成します。ここで、チャネル特性は名前と値のペアを使用して設定します。パス ゲインが、OSTBC コンバイナーの完全なチャネル推定として利用されるようにします。

mimochan = comm.MIMOChannel(...
    SampleRate=Rs,...
    PathDelays=tau,...
    AveragePathGains=pdb,...
    MaximumDopplerShift=maxDopp,...
    SpatialCorrelationSpecification='None',...
    NumTransmitAntennas=numTx,...
    NumReceiveAntennas=numRx,...
    PathGainsOutputPort=true);

ランダムなビット シーケンスを生成します。

data = randi([0 1],numBits,1);

QPSK 変調を適用します。

modData = pskmod(data,4,InputType='bit');

変調データを OSTBC 符号化器オブジェクトを使用して符号化します。

encData = hOSTBCEnc(modData);

符号化されたデータを MIMO チャネル経由で送信し、それにホワイト ノイズを付加します。

[chanOut,pathGains] = mimochan(encData);
rxSignal = awgn(chanOut,SNR);

pathGains 配列をパスの数 (2 番目の次元) について合計し、チャネル推定を形成します。関数 squeeze を適用して、次元が rxSignal の次元に準拠するようにします。

chEst = squeeze(sum(pathGains,2));

受信 MIMO 信号とそのチャネル推定を、OSTBC コンバイナー オブジェクトを使用して結合します。結合された信号を復調します。

combinedData = hOSTBCComb(rxSignal,chEst);
receivedData = pskdemod(combinedData,4,OutputType='bit');

ビット エラー数とビット エラー レートを計算します。

[numErrors,ber] = biterr(data,receivedData)
numErrors = 9
ber = 7.5000e-04

アルゴリズム

OSTBC コンバイナーは、5 つの異なる OSTBC 組み合わせ計算アルゴリズムをサポートしています。SymbolRateNumTransmitAntennas の選択に応じて、次の表に示されているアルゴリズムの 1 つを選択できます。

送信アンテナレートコードワード ブロック長ごとの計算アルゴリズム
21

(s^1s^2)=1H2j=1M(h1,j*r1,j+h2,jr2,j*h2,*jr1,jh1,jr2,j*)

31/2

(s^1s^2)=1H2j=1M(h1,j*r1,j+h2,jr2,j*+h3,*jr3,jh2,*jr1,jh1,jr2,j*h3,jr4,j*)

33/4

(s^1s^2s^3)=1H2j=1M(h1,j*r1,j+h2,jr2,j*h3,jr3,j*h2,*jr1,jh1,jr2,j*h3,jr4,j*h3,j*r1,j+h1,jr3,j*+h2,jr4,j*)

41/2

(s^1s^2)=1H2j=1M(h1,j*r1,j+h2,jr2,j*+h3,j*3,jr3,j+h4,jr4,j*h2,*jr1,jh1,jr2,j*+h4,j*r3,jh3,jr4,j*)

43/4

(s^1s^2s^3)=1H2j=1M(h1,j*r1,j+h2,jr2,j*h3,jr3,j*h4*,jr4,jh2,*jr1jh1,jr2,j*+h4*,jr3,jh3,jr4,j*h3,*jr1j+h4,j*r2,j+h1,jr3,j*+h2,jr4,j*)

s^k は OSTBC コードワード行列で k 番目の推定シンボルを表します。hij は、i 番目の送信アンテナと j 番目の受信アンテナからのチャネル推定を表します。i の値は [1, N] の範囲内です。ここで、N は送信アンテナの数です。j の値は [1, M] の範囲内です。ここで、M は受信アンテナの数です。rlj は、コードワード ブロックごとの j 番目の受信アンテナで l 番目のシンボルを表します。l の値は 1 からコードワード ブロック長までの範囲になります。H2 は、次で表されるリンクごとのチャネル電力の総和です。

H2=i=1Nj=1Mhij2.

拡張機能

バージョン履歴

R2012a で導入

参考

オブジェクト

ブロック