Main Content

comm.PSKDemodulator

(削除予定) M-ary PSK 手法を使用した復調

comm.PSKDemodulator は将来のリリースで削除される予定です。代わりに pskdemod を使用してください。コードの更新の詳細については、バージョン履歴を参照してください。

説明

comm.PSKDemodulator オブジェクトは、M-ary 位相偏移変調 (M-PSK) 法を使用して変調された信号を復調します。入力は、変調信号のベースバンド表現です。

M-PSK 法を使用して変調された信号を復調するには、次のようにします。

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

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

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

作成

説明

mpskdemod = comm.PSKDemodulator は、入力 M-PSK 信号を復調する System object™ を作成します。

mpskdemod = comm.PSKDemodulator(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、DecisionMethod="Hard decision" は硬判定メソッドを使用する復調を指定します。

mpskdemod = comm.PSKDemodulator(M,Name=Value) は、ModulationOrder プロパティを M に設定し、オプションで名前と値の引数を設定します。

mpskdemod = comm.PSKDemodulator(M,phase,Name=Value) は、ModulationOrder プロパティを M に、PhaseOffset プロパティを phase に設定し、さらにオプションで名前と値の引数を設定します。phase をラジアン単位で指定します。

プロパティ

すべて展開する

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

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

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

信号コンスタレーション点の数。正の整数として指定します。

データ型: double

コンスタレーションの 0 番目の点の位相 (ラジアン単位)。スカラーとして指定します。

例: PhaseOffset=0 とすると、QPSK 信号コンスタレーション点が座標軸上で {(1,0), (0,j), (-1,0), (0,-j)} に配置されます。

データ型: double

ビットとしてデータを出力するオプション。logical 0 (false) または logical 1 (true) として指定します。

  • 入力データ ベクトルと同じ長さで範囲 [0, (M – 1)] の整数値としてシンボルを出力するには、このプロパティを false に設定する。M は ModulationOrder の値を表します。

  • 復調シンボル数の log2(M) 倍に長さが等しいビット値の列ベクトルを出力するには、このプロパティを true に設定する。log2(M) ビットのグループがシンボルにマッピングされます。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。

データ型: logical

コンスタレーション ビットのシンボルの符号化マッピング。'Gray''Binary'、または 'Custom' として指定します。各整数または log2(ModulationOrder) ビットの各グループは、1 つのシンボルに対応します。

  • このプロパティを 'Gray' に設定すると、オブジェクトはシンボルをグレイ符号の信号コンスタレーションにマッピングします。

  • このプロパティを 'Binary' に設定すると、オブジェクトはシンボルを通常のバイナリ符号の信号コンスタレーションにマッピングします。具体的には、複素数値 ej(PhaseOffset + (2πm/ModulationOrder)) です。ここで、m は [0, (ModulationOrder1)] の範囲の整数です。

  • このプロパティを 'Custom' に設定すると、オブジェクトはシンボルを CustomSymbolMapping プロパティで定義された信号コンスタレーションにマッピングします。

カスタム シンボル符号化。ModulationOrder の値と長さが等しく、範囲 [0, (ModulationOrder1)] の一意の値をもつ整数ベクトルとして指定します。このベクトルの最初の要素は 0 + PhaseOffset の角度にあるコンスタレーション点に対応し、続く要素は反時計回りに実行されます。最後の要素は、角度 –2π/ModulationOrder + PhaseOffset のコンスタレーション点に対応します。

依存関係

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

データ型: double

復調判定メソッド。'Hard decision''Log-likelihood ratio'、または 'Approximate log-likelihood ratio' として指定します。BitOutput プロパティを false に設定すると、オブジェクトは常に硬判定復調を実行します。

依存関係

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

ノイズ分散のソース。'Property' または 'Input port' として指定します。

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に、DecisionMethod プロパティを 'Log-likelihood ratio' または 'Approximate log-likelihood ratio' に設定します。

ノイズ分散。正のスカラーとして指定します。

調整可能: Yes

ヒント

厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。計算に非常に大きな正または負の振幅が含まれる場合、厳密な LLR アルゴリズムの結果は次のようになります。

  • ノイズ分散が極度に大きい値の場合は、Inf または -Inf

  • ノイズ分散と信号強度の両方が非常に小さい値の場合は NaN

近似 LLR アルゴリズムでは指数が計算されません。近似 LLR アルゴリズムを使用することによって、Inf-Inf、および NaN の結果を回避できます。

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に、DecisionMethod プロパティを 'Log-likelihood ratio' または 'Approximate log-likelihood ratio' に、VarianceSource プロパティを 'Property' に設定します。

データ型: double

出力のデータ型。'Full precision''Smallest unsigned integer''double''single''int8''uint8''int16''uint16''int32'、または 'uint32''logical' として指定します。

  • 入力データ型が単精度または倍精度で、BitOutput プロパティを true に、DecisionMethod プロパティを 'Hard decision' に、OutputDataType プロパティを 'Full precision' に設定すると、出力のデータ型は入力と同じデータ型になります。

  • 入力データが固定小数点型の場合、出力データ型は、OutputDataType プロパティを 'Smallest unsigned integer' に設定したかのように動作します。

  • BitOutputtrue に、DecisionMethod プロパティを 'Hard Decision' に設定すると、'logical' データ型が有効なオプションになります。

  • BitOutput プロパティを true に、DecisionMethod プロパティを 'Log-likelihood ratio' または 'Approximate log-likelihood ratio' に設定すると、入力データ型は必ず単精度または倍精度になり、出力のデータ型は入力のデータ型と同じになります。

依存関係

このプロパティを有効にするには、BitOutput プロパティを false に設定するか、BitOutput プロパティを true に設定して DecisionMethod プロパティを 'Hard decision' に設定します。

固定小数点プロパティ

逆回転ファクターのデータ型。'Same word length as input' または 'Custom' として指定します。このオブジェクトは、ModulationOrder プロパティが 24、または 8 であり、入力信号が固定小数点型で、PhaseOffset プロパティが自明でない値をもつ場合にのみ、逆回転ファクターを計算に使用します。

  • ModulationOrder = 2 の場合、π/2 の倍数であれば位相オフセットは自明です。

  • ModulationOrder = 4 の場合、π/4 の偶数倍であれば位相オフセットは自明です。

  • ModulationOrder = 8 の場合、自明な位相オフセットはありません。

依存関係

このプロパティを有効にするには、BitOutput プロパティを false に設定するか、BitOutput プロパティを true に設定して DecisionMethod プロパティを 'Hard decision' に設定します。

逆回転ファクターの固定小数点データ型。AutoSignedness を伴う、スケーリングなしの numerictype (Fixed-Point Designer) オブジェクトとして指定します。語長は範囲 [2, 128] 内の値でなければなりません。

依存関係

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

データ型: numerictype object

使用法

説明

y = mpskdemod(x) は、入力信号に M-PSK 復調を適用し、復調された信号を返します。

y = mpskdemod(x,var) は、軟判定復調とノイズ分散 var を使用します。この構文は BitOutput プロパティを true に設定し、DecisionMethod プロパティを 'Approximate log-likelihood ratio' または 'Log-likelihood ratio' に、さらに VarianceSource プロパティを 'Input port' に設定した場合に適用されます。

入力引数

すべて展開する

M-PSK 変調された信号。スカラーまたは列ベクトルとして指定します。

依存関係

ModulationOrder プロパティを 8 以下の値に設定し、かつ BitOutput プロパティを false に設定するか、DecisionMethod プロパティを 'Hard decision' に設定して BitOutput プロパティを true に設定した場合、オブジェクトは符号付き整数データ型または符号付き固定小数点 (sfi (Fixed-Point Designer)) オブジェクトの入力を受け入れます。

データ型: double | single | int | fi

ノイズ分散。スカラーとして指定します。

依存関係

この引数を有効にするには、VarianceSource プロパティを 'Input port' に、BitOutput プロパティを true に、DecisionMethod プロパティを 'Approximate log-likelihood ratio' または 'Log-likelihood ratio' に設定します。

データ型: single | double

出力引数

すべて展開する

出力信号。スカラーまたは列ベクトルとして返されます。オブジェクトが値を整数として出力するかビットとして出力するかを指定するには、BitOutput プロパティを使用します。出力データ型を指定するには、OutputDataType プロパティを使用します。

オブジェクト関数

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

release(obj)

すべて展開する

constellation理想的な信号コンスタレーションの計算またはプロット
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

カスタムのシンボル マッピングを使用する、16-PSK 変調器と 16-PSK 復調器の System object を作成します。AWGN チャネルの BER を見積もり、性能を理論上のグレイ符号化 PSK システムと比較します。

16-PSK 変調方式のカスタムのシンボル マッピングを作成します。16 個の整数シンボルは、範囲 [0, 15] の値でなければなりません。

custMap = [0 2 4 6 8 10 12 14 15 13 11 9 7 5 3 1];

配列 custMap で定義されているカスタムのシンボル マッピングをもつ 16-PSK 変調器と 16-PSK 復調器のペアを作成します。

pskModulator = comm.PSKModulator(16,'BitInput',true, ...
    'SymbolMapping','Custom','CustomSymbolMapping',custMap);
pskDemodulator = comm.PSKDemodulator(16,'BitOutput',true, ...
    'SymbolMapping','Custom','CustomSymbolMapping',custMap);

16 配列データを使用するために AWGN チャネル System object を作成します。

awgnChannel = comm.AWGNChannel('BitsPerSymbol',log2(16));

BER 統計を追跡するためのエラー レート オブジェクトを作成します。

errorRate = comm.ErrorRate;

シミュレーションのベクトルを初期化します。 E b / N 0 を、6 dB から 18 dB まで 1 dB 刻みで変化させます。

ebnoVec = 6:18;
ber = zeros(size(ebnoVec));

変調したバイナリ データ AWGN チャネル経由で渡し、受信した信号を復調し、誤り統計を収集して BER を見積もります。

for n = 1:length(ebnoVec)
    
    % Reset the error counter for each Eb/No value
    reset(errorRate)
    % Reset the array used to collect the error statistics
    errVec = [0 0 0];
    % Set the channel Eb/No
    awgnChannel.EbNo = ebnoVec(n);
    
    while errVec(2) < 200 && errVec(3) < 1e7
        % Generate a 1000-symbol frame
        data = randi([0 1],4000,1);
        % Modulate the binary data
        modData = pskModulator(data);
        % Pass the modulated data through the AWGN channel
        rxSig = awgnChannel(modData);
        % Demodulate the received signal
        rxData = pskDemodulator(rxSig);
        % Collect the error statistics
        errVec = errorRate(data,rxData);
    end
    
    % Save the BER data
    ber(n) = errVec(1);
end

関数berawgnを使用して AWGN チャネルの理論上の BER データを生成します。

berTheory = berawgn(ebnoVec,'psk',16,'nondiff');

次のコードを使用して、シミュレートされた結果と理論上の結果をプロットします。シミュレートされたカスタム シンボル マッピングの 16-PSK 変調の BER 性能は、グレイ符号の理論予測曲線ほど良くありません。

figure
semilogy(ebnoVec,[ber; berTheory])
xlabel('Eb/No (dB)')
ylabel('BER')
grid
legend('Simulation','Theory','location','ne')

詳細

すべて展開する

参照

[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.

拡張機能

バージョン履歴

R2012a で導入

すべて折りたたむ

R2023a: 削除予定

comm.PSKDemodulator は将来のリリースで削除される予定です。関数 pskdemod を使用して、入力信号を M-ary PSK 復調します。