Main Content

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

comm.PSKDemodulator

M-ary PSK 手法を使用した復調

説明

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

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

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

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

メモ

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

構築

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

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

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

プロパティ

ModulationOrder

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

コンスタレーションのポイント数を正の整数スカラー値として指定します。既定の設定は 8 です。

PhaseOffset

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

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

BitOutput

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

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

SymbolMapping

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

オブジェクトが整数または log2(ModulationOrder) ビットのグループを対応するシンボルにマップする方法を指定します。BinaryGray または Custom から選択します。既定の設定は Gray です。このプロパティを Gray に設定すると、オブジェクトはグレイ符号コンスタレーションを使用します。このプロパティを Binary に設定するとき、整数 m は [0, (ModulationOrder1)] の範囲内になければならず、複素数値 exp(j⨉PhaseOffset + j2πm/ModulationOrder) にマッピングされます。このプロパティを Custom に設定すると、オブジェクトは CustomSymbolMapping で定義されたコンスタレーションを使用します。

CustomSymbolMapping

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

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

DecisionMethod

復調判定メソッド

オブジェクトが使用する判定メソッドを Hard decisionLog-likelihood ratio または Approximate log-likelihood ratio として指定します。既定の設定は Hard decision です。BitOutput プロパティを 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 ratioVarianceSource プロパティを Property に設定した場合に、このプロパティが適用されます。このプロパティは調整可能です。

OutputDataType

出力のデータ型

出力データ型を Full precisionSmallest unsigned integerdoublesingleint8uint8int16uint16int32 または uint32 に指定します。既定の設定は Full precision です。このプロパティは、BitOutput プロパティを false に設定した場合に適用されます。また、BitOutput プロパティを true に設定し、DecisionMethod プロパティを Hard decision に設定した場合に適用されます。この 2 番目の場合、OutputDataType プロパティを Full precision に設定すると、入力データ型は単精度または倍精度になり、出力データは入力と同じデータ型になります。入力データが固定小数点データ型の場合、出力データ型は OutputDataType プロパティを Smallest unsigned integer に設定した場合と同様に動作します。

BitOutputtrue に設定し、DecisionMethod プロパティを Hard Decision に設定すると、logical データ型が有効なオプションになります。BitOutput プロパティを true に設定し、DecisionMethod プロパティを Log-likelihood ratio または Approximate log-likelihood ratio に設定した場合、出力データは入力と同じデータ型になります。この場合、データ型は単精度または倍精度でなければなりません。

 固定小数点プロパティ

メソッド

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

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

すべて折りたたむ

カスタムのシンボル マッピングを使用する、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 変調器と復調器のペアを作成します。

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

変調器のコンスタレーションを表示します。

constellation(pskModulator)

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

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

BER 統計を追跡するための誤り率オブジェクトを作成します。

errorRate = comm.ErrorRate;

シミュレーションのベクトルを初期化します。Eb/N0 は 6 から 18 dB の間で 1 dB 刻みで異なります。

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

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

for k = 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(k);
    
    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(k) = 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')

アルゴリズム

すべて展開する

拡張機能

R2012a で導入