comm.PSKDemodulator
(削除予定) M-ary PSK 手法を使用した復調
説明
comm.PSKDemodulator
オブジェクトは、M-ary 位相偏移変調 (M-PSK) 法を使用して変調された信号を復調します。入力は、変調信号のベースバンド表現です。
M-PSK 法を使用して変調された信号を復調するには、次のようにします。
comm.PSKDemodulator
オブジェクトを作成し、そのプロパティを設定します。関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の機能の詳細については、System object とはを参照してください。
作成
構文
説明
mpskdemod = comm.PSKDemodulator
は、入力 M-PSK 信号を復調する System object™ を作成します。
mpskdemod = comm.PSKDemodulator(
は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、Name
=Value
)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 でのシステム設計を参照してください。
ModulationOrder
— 信号コンスタレーション点の数
8
(既定値) | 正の整数
信号コンスタレーション点の数。正の整数として指定します。
データ型: double
PhaseOffset
— コンスタレーションの 0 番目の点の位相
pi/8
(既定値) | スカラー
コンスタレーションの 0 番目の点の位相 (ラジアン単位)。スカラーとして指定します。
例: PhaseOffset=0
とすると、QPSK 信号コンスタレーション点が座標軸上で {(1,0), (0,j), (-1,0), (0,-j)} に配置されます。
データ型: double
BitOutput
— ビットとしてデータを出力するオプション
0
または false
(既定値) | 1
または true
ビットとしてデータを出力するオプション。logical 0
(false
) または logical 1
(true
) として指定します。
入力データ ベクトルと同じ長さで範囲 [
0
, (M – 1)] の整数値としてシンボルを出力するには、このプロパティをfalse
に設定する。M はModulationOrder
の値を表します。復調シンボル数の log2(M) 倍に長さが等しいビット値の列ベクトルを出力するには、このプロパティを
true
に設定する。log2(M
) ビットのグループがシンボルにマッピングされます。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。
データ型: logical
SymbolMapping
— シンボルの符号化マッピング
'Gray'
(既定値) | 'Binary'
| 'Custom'
コンスタレーション ビットのシンボルの符号化マッピング。'Gray'
、'Binary'
、または 'Custom'
として指定します。各整数または log2(ModulationOrder
) ビットの各グループは、1 つのシンボルに対応します。
このプロパティを
'Gray'
に設定すると、オブジェクトはシンボルをグレイ符号の信号コンスタレーションにマッピングします。このプロパティを
'Binary'
に設定すると、オブジェクトはシンボルを通常のバイナリ符号の信号コンスタレーションにマッピングします。具体的には、複素数値 ej(PhaseOffset
+ (2πm/ModulationOrder
)) です。ここで、m は [0
, (ModulationOrder
–1
)] の範囲の整数です。このプロパティを
'Custom'
に設定すると、オブジェクトはシンボルをCustomSymbolMapping
プロパティで定義された信号コンスタレーションにマッピングします。
CustomSymbolMapping
— カスタム シンボル符号化
0:7
(既定値) | 整数ベクトル
カスタム シンボル符号化。ModulationOrder
の値と長さが等しく、範囲 [0
, (ModulationOrder
– 1
)] の一意の値をもつ整数ベクトルとして指定します。このベクトルの最初の要素は 0
+ PhaseOffset
の角度にあるコンスタレーション点に対応し、続く要素は反時計回りに実行されます。最後の要素は、角度 –2π/ModulationOrder
+ PhaseOffset
のコンスタレーション点に対応します。
依存関係
このプロパティを有効にするには、SymbolMapping
プロパティを 'Custom'
に設定します。
データ型: double
DecisionMethod
— 復調判定メソッド
'Hard decision'
(既定値) | 'Log-likelihood ratio'
| 'Approximate log-likelihood ratio'
復調判定メソッド。'Hard decision'
、'Log-likelihood ratio'
、または 'Approximate log-likelihood ratio'
として指定します。BitOutput
プロパティを false
に設定すると、オブジェクトは常に硬判定復調を実行します。
依存関係
このプロパティを有効にするには、BitOutput
プロパティを true
に設定します。
VarianceSource
— ノイズ分散のソース
'Property'
(既定値) | 'Input port'
ノイズ分散のソース。'Property'
または 'Input port'
として指定します。
依存関係
このプロパティを有効にするには、BitOutput
プロパティを true
に、DecisionMethod
プロパティを 'Log-likelihood ratio'
または 'Approximate log-likelihood ratio'
に設定します。
Variance
— ノイズ分散
1
(既定値) | 正のスカラー
ノイズ分散。正のスカラーとして指定します。
調整可能: Yes
ヒント
厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。計算に非常に大きな正または負の振幅が含まれる場合、厳密な LLR アルゴリズムの結果は次のようになります。
ノイズ分散が極度に大きい値の場合は、
Inf
または-Inf
ノイズ分散と信号強度の両方が非常に小さい値の場合は
NaN
近似 LLR アルゴリズムでは指数が計算されません。近似 LLR アルゴリズムを使用することによって、Inf
、-Inf
、および NaN
の結果を回避できます。
依存関係
このプロパティを有効にするには、BitOutput
プロパティを true
に、DecisionMethod
プロパティを 'Log-likelihood ratio'
または 'Approximate log-likelihood ratio'
に、VarianceSource
プロパティを 'Property'
に設定します。
データ型: double
OutputDataType
— 出力のデータ型
'Full precision'
(既定値) | 'Smallest unsigned integer'
| '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'
に設定したかのように動作します。BitOutput
をtrue
に、DecisionMethod
プロパティを'Hard Decision'
に設定すると、'logical'
データ型が有効なオプションになります。BitOutput
プロパティをtrue
に、DecisionMethod
プロパティを'Log-likelihood ratio'
または'Approximate log-likelihood ratio'
に設定すると、入力データ型は必ず単精度または倍精度になり、出力のデータ型は入力のデータ型と同じになります。
依存関係
このプロパティを有効にするには、BitOutput
プロパティを false
に設定するか、BitOutput
プロパティを true
に設定して DecisionMethod
プロパティを 'Hard decision'
に設定します。
DerotateFactorDataType
— 逆回転ファクターのデータ型
'Same word length as input'
(既定値) | 'Custom'
逆回転ファクターのデータ型。'Same word length as input'
または 'Custom'
として指定します。このオブジェクトは、ModulationOrder
プロパティが 2
、4
、または 8
であり、入力信号が固定小数点型で、PhaseOffset
プロパティが自明でない値をもつ場合にのみ、逆回転ファクターを計算に使用します。
ModulationOrder
=2
の場合、π/2 の倍数であれば位相オフセットは自明です。ModulationOrder
=4
の場合、π/4 の偶数倍であれば位相オフセットは自明です。ModulationOrder
=8
の場合、自明な位相オフセットはありません。
依存関係
このプロパティを有効にするには、BitOutput
プロパティを false
に設定するか、BitOutput
プロパティを true
に設定して DecisionMethod
プロパティを 'Hard decision'
に設定します。
CustomDerotateFactorDataType
— 逆回転ファクターの固定小数点データ型
numerictype([],16)
(既定値) | スケーリングなしの numerictype
オブジェクト
逆回転ファクターの固定小数点データ型。Auto
の Signedness
を伴う、スケーリングなしの numerictype
(Fixed-Point Designer) オブジェクトとして指定します。語長は範囲 [2, 128] 内の値でなければなりません。
依存関係
このプロパティを有効にするには、DerotateFactorDataType
プロパティを 'Custom'
に設定します。
データ型: numerictype object
使用法
説明
は、軟判定復調とノイズ分散 y
= mpskdemod(x
,var
)var
を使用します。この構文は BitOutput
プロパティを true
に設定し、DecisionMethod
プロパティを 'Approximate log-likelihood ratio'
または 'Log-likelihood ratio'
に、さらに VarianceSource
プロパティを 'Input port'
に設定した場合に適用されます。
入力引数
x
— M-PSK 変調された信号
スカラー | 列ベクトル
M-PSK 変調された信号。スカラーまたは列ベクトルとして指定します。
依存関係
ModulationOrder
プロパティを 8
以下の値に設定し、かつ BitOutput
プロパティを false
に設定するか、DecisionMethod
プロパティを 'Hard decision'
に設定して BitOutput
プロパティを true
に設定した場合、オブジェクトは符号付き整数データ型または符号付き固定小数点 (sfi
(Fixed-Point Designer)) オブジェクトの入力を受け入れます。
データ型: double
| single
| int
| fi
var
— ノイズ分散
スカラー
ノイズ分散。スカラーとして指定します。
依存関係
この引数を有効にするには、VarianceSource
プロパティを 'Input port'
に、BitOutput
プロパティを true
に、DecisionMethod
プロパティを 'Approximate log-likelihood ratio'
または 'Log-likelihood ratio'
に設定します。
データ型: single
| double
出力引数
y
— 出力信号
スカラー | 列ベクトル
出力信号。スカラーまたは列ベクトルとして返されます。オブジェクトが値を整数として出力するかビットとして出力するかを指定するには、BitOutput
プロパティを使用します。出力データ型を指定するには、OutputDataType
プロパティを使用します。
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
comm.PSKDemodulator
に固有
constellation | 理想的な信号コンスタレーションの計算またはプロット |
例
カスタム シンボル マッピングを使用した 16-PSK
カスタムのシンボル マッピングを使用する、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;
シミュレーションのベクトルを初期化します。 を、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')
詳細
硬判定 BPSK 復調
BPSK 復調に必要な信号前処理は、構成によって異なります。
次の図は、自明な位相オフセット (π/2 の倍数) 構成用の硬判定 BPSK 復調の信号図を示しています。
次の図は、自明ではない位相オフセット構成用の硬判定 BPSK 復調の浮動小数点信号図を示しています。
次の図は、自明ではない位相オフセット構成用の硬判定 BPSK 復調の固定小数点信号図を示しています。
硬判定 QPSK 復調
QPSK 復調に必要な信号前処理は、構成によって異なります。
次の図は、自明な位相オフセット (π/4 の奇数倍) 構成用の硬判定 QPSK 復調の信号図を示しています。
次の図は、自明ではない位相オフセット構成用の硬判定 QPSK 復調の浮動小数点信号図を示しています。
次の図は、自明ではない位相オフセット構成用の硬判定 QPSK 復調の固定小数点信号図を示しています。
硬判定高次 PSK
高次の PSK 復調に必要な信号前処理は、構成によって異なります。
次の図は、自明な位相オフセット (π/8 の奇数倍) 構成用の硬判定 8-PSK 復調の信号図を示しています。
次の図は、自明な位相オフセット (π/8 の奇数倍) 構成用の硬判定 8-PSK 復調の固定小数点信号図を示しています。
次の図は、自明ではない位相オフセット構成用の硬判定 M-PSK 復調の浮動小数点信号図を示しています。
M > 8 の場合、速度と実装コストを改善するため、自明なケースに対する (具体的には、位相オフセットが 0、π/2、π、または 3π/2 の場合) 逆回転演算は行われません。
また、M > 8 の場合、double
と single
の入力型のみがサポートされます。
軟判定 M-PSK 復調
軟復調では、2 つの軟判定対数尤度比 (LLR) アルゴリズム (厳密な LLR と近似 LLR) を使用できます。厳密な LLR アルゴリズムは近似 LLR アルゴリズムよりも正確ですが実行速度が遅くなります。各アルゴリズムの詳細については、硬判定復調と軟判定復調のトピックを参照してください。
メモ
厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。計算に非常に大きな正または負の振幅が含まれる場合、厳密な LLR アルゴリズムの結果は次のようになります。
ノイズ分散が極度に大きい値の場合は、
Inf
または-Inf
ノイズ分散と信号強度の両方が非常に小さい値の場合は
NaN
近似 LLR アルゴリズムでは指数が計算されません。近似 LLR アルゴリズムを使用することによって、Inf
、-Inf
、および NaN
の結果を回避できます。
参照
[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
MATLAB コード生成における System object (MATLAB Coder)を参照してください。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
このソフトウェアは、double
および single
データ型をシミュレーションではサポートしますが、HDL コード生成ではサポートしません。
事前定義された System object からの HDL コードを生成するには、ビタビ復号化器 System object からの HDL コード生成 (HDL Coder)を参照してください。
バージョン履歴
R2012a で導入MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)