Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.gpu.PSKDemodulator

GPU を使用した M-ary PSK 法による復調

説明

GPU PSKDemodulator オブジェクトは、M-ary 位相シフト キーイング (M-PSK) メソッドを使用して入力信号を復調します。

メモ

このオブジェクトを使用するには、Parallel Computing Toolbox™ のライセンスをインストールして対象 GPU へのアクセス権を入手しなければなりません。GPU の詳細は、GPU 計算 (Parallel Computing Toolbox)を参照してください。

GPU ベースの System object™ は、gpuArray クラスを使用して作成された一般的な MATLAB® 配列またはオブジェクトを受け入れます。GPU ベースの System object は、倍精度または単精度データ型の入力信号をサポートします。出力信号のデータ型は、入力信号から継承されます。

  • 入力信号が MATLAB 配列の場合、System object は CPU と GPU の間のデータ転送を処理します。出力信号は MATLAB 配列です。

  • 入力信号が gpuArray の場合、データは GPU に残ります。出力信号は gpuArray です。オブジェクトに gpuArray が渡されると、計算がすべて GPU 上で実行され、データ転送は発生しません。gpuArray 引数を渡すことにより、シミュレーション時間が短縮されてパフォーマンスが向上します。詳細は、GPU での配列の確立 (Parallel Computing Toolbox)を参照してください。

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

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

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

メモ

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

構築

H = comm.gpu.PSKDemodulator は、GPU ベース復調器 System object H を作成します。このオブジェクトは、M-ary 位相シフト キーイング (M-PSK) メソッドを使用して、入力信号を復調します。

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

H = comm.gpu.PSKDemodulator(M,PHASE,Name,Value)ModulationOrder プロパティを M に、PhaseOffset プロパティを PHASE に、他の指定されたプロパティ名を指定された値に設定して、GPU ベースの M-PSK 復調器オブジェクト H を作成します。MPHASE は値のみの引数です。値のみの引数を指定するには、先行するすべての値のみの引数も指定しなければなりません。名前と値のペアの引数を任意の順番で指定できます。

プロパティ

ModulationOrder

コンスタレーション点の数

コンスタレーション点の数を正の整数スカラーで指定します。既定の設定は 8 です。

PhaseOffset

コンスタレーションの 0 番目の点の位相

0 番目のコンスタレーションの点の位相オフセット (ラジアン) を実数のスカラーとして指定します。既定の設定は π/8 です。

BitOutput

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

出力がビットのグループまたは整数シンボル値で構成されているかどうかを指定します。このプロパティを true に設定すると、step メソッドは、復調されたシンボルの log2(ModulationOrder) 倍の数に等しい長さのビット値をもつ列ベクトルを出力します。このプロパティを false に設定すると、step メソッドは、0 から ModulationOrder-1 までの整数シンボル値を含む、入力データ ベクトルと長さが等しい列ベクトルを出力します。既定値は偽です。

SymbolMapping

コンスタレーション符号化

このオブジェクトで log2(ModulationOrder) ビットの整数またはグループを対応するシンボルにマップする方法を、BinaryGray または Custom のいずれかに指定します。既定の設定は Gray です。このプロパティを Gray に設定すると、オブジェクトはグレイ符号コンスタレーションを使用します。このプロパティを Binary に設定すると、整数 m (0 ≤ m ≤ModulationOrder-1) は複素数値にマップされます。この値は exp(j*PhaseOffset + j*2*pi*m/ModulationOrder) として表されます。このプロパティを Custom に設定すると、オブジェクトは CustomSymbolMapping で定義されたコンスタレーションを使用します。

CustomSymbolMapping

カスタム コンスタレーションの符号化

カスタム コンスタレーション シンボル マッピング ベクトルを指定します。既定の設定は 0:7 です。このプロパティは、範囲 [0, ModulationOrder-1] の固有の整数値をもつ、サイズ ModulationOrder の行または列ベクトルでなければなりません。これらの値のデータ型は double でなければなりません。このベクトルの最初の要素は 0 + PhaseOffset の角度にあるコンスタレーション点に対応し、続く要素は反時計回りに実行されます。最後の要素は、角度 -π/ModulationOrder + PhaseOffset のコンスタレーション点に対応します。このプロパティは、SymbolMapping プロパティが [カスタム] に設定されている場合に適用されます。

DecisionMethod

復調判定メソッド

オブジェクトで使用される判定方法を、Hard decisionLog-likelihood ratio または Approximate log-likelihood ratio のいずれかで指定します。既定の設定は Hard decision です。DecisionMethod を false に設定すると、オブジェクトは常に硬判定復調を実行します。このプロパティは、BitOutput プロパティを true に設定した場合に適用されます。

VarianceSource

ノイズ分散のソース

ノイズ分散のソースを、Property または Input port のいずれかとして指定します。既定の設定は Property です。このプロパティは、BitOutput プロパティを true に設定し、DecisionMethod プロパティを Log-likelihood ratio または Approximate log-likelihood ratio に設定した場合に適用されます。

Variance

ノイズの分散を正の実数スカラーとして指定します。既定の設定は 1 です。この値が非常に小さい (つまり、SNR が非常に大きい) 場合は、対数尤度比 (LLR) 計算で Inf または -Inf が出ることがあります。これは LLR アルゴリズムが、非常に大きい数または非常に小さい数の指数値計算を有限精度演算により行うためです。このような場合は、指数計算を行わないアルゴリズムをもつ近似 LLR を使用してください。このプロパティは、BitOutput プロパティを true に設定し、DecisionMethod プロパティを Log-likelihood ratio または Approximate log-likelihood ratio に、さらに VarianceSource プロパティを Property に設定した場合に適用されます。このプロパティは調整可能です。

OutputDataType

出力のデータ型

このプロパティを Full precision に設定した場合、出力信号は入力信号のデータ型を継承します。

メソッド

constellation理想的なコンスタレーションの計算またはプロット
stepM-ary PSK 手法を使用した復調
すべての System object に共通
release

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

アルゴリズム

GPU PSK Demodulator System object は、comm.PSKDemodulator System object と同じアルゴリズムを使用します。詳細は、「復号化アルゴリズム」を参照してください。

LDPC 符号化され、QPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。次に、誤りの復調、復号化、カウントを行います。

16-PSK 変調および復調

LDPC 符号化され、QPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。

GPU ベースの PSK 変調器 System object を作成します。

hMod = comm.gpu.PSKModulator(16, 'PhaseOffset',pi/16);

S/N 比が 15 の GPU ベースの AWGN チャネル System object を作成します。

hAWGN = comm.gpu.AWGNChannel('NoiseMethod', ...
    'Signal to noise ratio (SNR)','SNR',15);

GPU ベースの PSK 復調器 System object を作成します。

 hDemod = comm.gpu.PSKDemodulator(16, 'PhaseOffset',pi/16);

誤り率計算機 System object を作成します。

hError = comm.ErrorRate;

50 個のシンボルを含むデータ フレームを送信します。

for counter = 1:100
data = gpuArray.randi([0 hMod.ModulationOrder-1], 50, 1);

step メソッドを使用してシミュレーションを実行し、データを処理します。

modSignal = step(hMod, data);
noisySignal = step(hAWGN, modSignal);
receivedData = step(hDemod, noisySignal);
errorStats = step(hError, gather(data), gather(receivedData));
end

誤り率の結果を計算します。

fprintf('Error rate = %f\nNumber of errors = %d\n',...
    errorStats(1), errorStats(2))

GPU PSK 復調器

GPU PSK 変調器と復調器のペアを作成します。

gpuMod = comm.gpu.PSKModulator;
gpuDemod = comm.gpu.PSKDemodulator;

ランダム データ シンボルを生成します。データを変調します。

txData = randi([0 7],1000,1);
txSig = gpuMod(txData);

AWGN チャネルを通して信号を渡します。

rxSig = awgn(txSig,20);

受信信号を復調します。

rxData = gpuDemod(rxSig);

シンボル誤り数を求めます。

numSymErrors = symerr(txData,rxData)
numSymErrors =

   736

拡張機能

R2012a で導入