Main Content

comm.PSKModulator

(削除予定) M-PSK 法を使用した信号の変調

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

説明

PSKModulatorSystem object™ は、M-ary 位相偏移変調 (M-PSK) 法を使用して変調します。出力は、変調信号のベースバンド表現です。

M-PSK 法を使用して信号を変調するには、次を行います。

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

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

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

作成

説明

mpskmod = comm.PSKModulator は、M-ary 位相偏移変調 (M-PSK) 法を使用して、入力信号を変調する変調器 System object を作成します。

mpskmod = comm.PSKModulator(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、BitInput=true は、入力値がバイナリでなければならないことを指定します。

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

mpskmod = comm.PSKModulator(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) または 1 (true) として指定します。

  • このプロパティを false に設定する場合、入力値は範囲 [0, M–1] の整数でなければなりません。ここで、M は ModulationOrder です。

  • このプロパティを true に設定する場合、入力値はバイナリでなければならず、入力ベクトルの長さはシンボルあたりのビット数 log2(M) の整数倍でなければなりません。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

出力のデータ型。'double''single'、または 'Custom' として指定します。

固定小数点プロパティ

出力信号の固定小数点データ型。Signedness プロパティが Auto に設定された numerictype オブジェクトとして指定します。このタイプのオブジェクトを作成するには、関数 numerictype (Fixed-Point Designer) を使用します。

依存関係

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

使用法

説明

mpsksignal = mpskmod(insignal) は、M-PSK 法を使用して入力信号を変調します。出力は変調した M-PSK ベースバンド信号です。

入力引数

すべて展開する

入力信号。整数またはビットの列ベクトルとして指定します。BitInput プロパティで、必要とされる入力値およびベクトルの長さを指定します。

データ型: double

出力引数

すべて展開する

M-PSK 変調されたベースバンド信号。複素数値のコンスタレーション シンボルから成るスカラーまたはベクトルとして返されます。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')

アルゴリズム

バイナリ符号化の場合、出力ベースバンド信号では、入力ビットまたは整数が次に従って複素数シンボルにマッピングされます。

sn(t)=exp(jπ(2n+1M));n{0,1,,M1}.

入力がビット用に構成されている場合、log2(M) ビットのグループが、構成されたシンボル マッピングの複素数シンボルを表します。マッピングは、バイナリ符号化、グレイ符号化、またはカスタム符号化できます。

グレイ符号化には、隣接するコンスタレーション点間で変化するビットが 1 つだけであるという利点があるため、ビット エラー レート性能が向上します。次の表は、グレイ符号化を使用した 8-PSK 変調での入力シンボルと出力シンボルの間のマッピングを示しています。

入力出力
0 0 (000)
1 1 (001)
2 3 (011)
3 2 (010)
4 6 (110)
5 7 (111)
6 5 (101)
7 4 (100)

次のコンスタレーション ダイアグラムは、対応するシンボルとそのバイナリ値を示しています。

Constellation diagram showing 8-PSK Gray Mapping with phase offset=0.3972 radians

参照

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

拡張機能

バージョン履歴

R2012a で導入

すべて折りたたむ

R2023a: 削除予定

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