pskdemod
M-ary PSK 手法を使用した復調
構文
説明
は、M-PSK コンスタレーションの位相オフセットを指定します。Z
= pskdemod(Y
,M
,phaseoffset
)
は、M-PSK コンスタレーションのシンボル順序を指定します。Z
= pskdemod(Y
,M
,phaseoffset
,symorder
)
は、前述の構文のいずれかを使用してオプションの名前と値の引数を指定します。たとえば、Z
= pskdemod(___,Name=Value
)pskdemod(Y,M,PlotConstellation=true)
は、変調次数 M
を使用して復調し、コンスタレーションをプロットします。名前と値の引数は、他のすべての入力引数の後で指定します。
例
PSK と PAM の変調スキームを比較し、PSK の方が位相ノイズの影響を受けやすいことを示します。PSK の方が位相ノイズの影響を受けやすいのは、PAM コンスタレーションが線形であるのに対し PSK コンスタレーションが円形であるためです。
シンボル数と変調次数のパラメーターを指定します。ランダム データ シンボルを生成します。
len = 10000; M = 16; msg = randi([0 M-1],len,1);
位相ノイズ System object™ を作成し、構成された設定を表示します。
phasenoise = comm.PhaseNoise(Level=[-70 -80])
phasenoise = comm.PhaseNoise with properties: Level: [-70 -80] FrequencyOffset: [2000 20000] SampleRate: 1000000 RandomStream: 'Global stream'
PSK と PAM の両方を使用して msg
を変調し、2 つの方法を比較します。
txpsk = pskmod(msg,M); txpam = pammod(msg,M);
変調された信号の位相をずらします。
rxpsk = phasenoise(txpsk); rxpam = phasenoise(txpam);
受信信号の散布図を作成します。
scatterplot(rxpsk);
title('Noisy PSK Scatter Plot')
scatterplot(rxpam);
title('Noisy PAM Scatter Plot')
受信信号を復調します。
recovpsk = pskdemod(rxpsk,M); recovpam = pamdemod(rxpam,M);
それぞれの変調スキームのシンボル エラーの数を計算します。PSK 信号の場合、かなり多数のシンボル エラーが発生します。
numerrs_psk = symerr(msg,recovpsk); numerrs_pam = symerr(msg,recovpam); [numerrs_psk numerrs_pam]
ans = 1×2
795 3
ランダムなシンボルを生成します。
dataIn = randi([0 3],1000,1);
データを QPSK 変調します。
txSig = pskmod(dataIn,4,pi/4);
AWGN チャネルを通して信号を渡します。
rxSig = awgn(txSig,10);
受信信号を復調し、シンボル エラーの数を計算します。
dataOut = pskdemod(rxSig,4,pi/4); numErrs = symerr(dataIn,dataOut)
numErrs = 3
変調次数を設定し、コンスタレーション点の完全なセットを含むデータ シーケンスを作成します。
M = 8; data = (0:M-1); phaseoffset = 0;
変調および復調されたグレイ符号化データおよびバイナリ符号化データに対する 8-PSK シンボル マッピングのプロット コンスタレーションを可視化します。
symgray = pskmod(data,M,phaseoffset,'gray',PlotConstellation=true, ... InputType='integer');
mapgray = pskdemod(symgray,M,phaseoffset,'gray',OutputType='integer'); symbin = pskmod(data,M,phaseoffset,'bin'); mapbin = pskdemod(symbin,M,phaseoffset,'bin',PlotConstellation=true, ... OutputType='bit');
入力引数
M-PSK 変調された入力信号。スカラー、ベクトルまたは行列として指定します。Y
が行列の場合、関数は列を個別に処理します。
データ型: double
| single
複素数のサポート: あり
変調次数。1 より大きい整数値として指定します。
データ型: double
PSK コンスタレーションの位相オフセット (ラジアン単位)。スカラーとして指定します。
データ型: double
シンボルの順序。'gray'
、'bin'
、またはベクトルとして指定します。この引数は、どのようにバイナリ ベクトルを対応する整数に割り当てるかを指定します。
'gray'
— グレイ符号の順序を使用します。'bin'
— バイナリ符号の順序を使用します。ベクトル –– カスタムのシンボル順序を使用します。ベクトルの長さは
M
で、範囲 [0,M
– 1] 内の一意の値を含みます。最初の要素は、角度phaseoffset
に対応するコンスタレーション点に相関し、続く要素は反時計回りに実行されます。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: Z = pskdemod(Y,M,phaseoffset,symorder,OutputType='bit')
出力タイプ。'integer'
、'bit'
、'llr'
、または 'approxllr'
として指定します。
出力のデータ型。この表にリストされているデータ型のいずれかとして指定します。OutputDataType
で使用可能な値は、OutputType
の値によって異なります。
OutputType の値 | 使用可能な OutputDataType の値 |
---|---|
'integer' | 'double' 、'single' 、'int8' 、'int16' 、'int32' 、'uint8' 、'uint16' または 'uint32' |
'bit' | 'double' 、'single' 、'int8' 、'int16' 、'int32' 、'uint8' 、'uint16' 、'uint32' または 'logical' |
既定値は、入力 Y
のデータ型になります。
依存関係
この引数を有効にするには、OutputType
を 'integer'
または 'bit'
に設定します。
ノイズ分散。次のいずれかのオプションとして指定します。
正のスカラー — 関数はすべての入力要素で同じノイズ分散値を使用します。
正の値のベクトル — 対応する最後の次元に沿った入力のすべての要素で、関数はベクトルの各要素によって指定されたノイズ分散を使用します。ベクトルの長さは入力信号の列数に等しくなければなりません。
復調関数には複素数の入力信号が必要です。BPSK の場合、変調器は虚数部の値がゼロである複素信号を出力します。代わりに、復調器に実信号を入力する場合は、複素信号の分散値を実数値入力信号の分散の 2 倍に設定し、複素信号のノイズ パワーを実数値入力信号内で表さなければなりません。
ヒント
厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。計算に非常に大きな正または負の振幅が含まれる場合、厳密な LLR アルゴリズムの結果は次のようになります。
ノイズ分散が極度に大きい値の場合は、
Inf
または-Inf
ノイズ分散と信号強度の両方が非常に小さい値の場合は
NaN
近似 LLR アルゴリズムでは指数が計算されません。近似 LLR アルゴリズムを使用することによって、Inf
、-Inf
、および NaN
の結果を回避できます。
依存関係
この引数は、OutputType
を 'llr'
または 'approxllr'
に設定した場合に適用されます。
データ型: double
コンスタレーションをプロットするためのオプション。logical 0
(false
) または logical 1
(true
) として指定します。コンスタレーションをプロットするには、PlotConstellation
を true
に設定します。
データ型: logical
出力引数
M-PSK 復調された出力信号。スカラー、ベクトル、または行列として返されます。この出力の値と次元は、次の表に示すように、指定した OutputType
値によって異なります。
OutputType | pskdemod の出力値 | 出力の次元 |
---|---|---|
'integer' | 復調した整数値 ([0, M – 1] の範囲) | Z の次元は入力 Y と同じになります。 |
'bit' | 復調されたビット | Z の行数は、Y の行数の log2(M ) 倍になります。関数は復調された各シンボルを log2(M ) ビットのグループにマッピングします。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。 |
'llr' | 厳密な対数尤度アルゴリズムを使用して計算された各ビットの対数尤度比の値。詳細は、厳密な LLR アルゴリズムを参照してください。 | |
'approxllr' | 各ビットの近似対数尤度比の値。この値は近似対数尤度アルゴリズムを使用して計算されます。詳細については、近似 LLR アルゴリズムを参照してください。 |
参照
[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
この関数は、GPU 配列の入力をサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入関数 pskdemod
において、グラフィックス処理装置 (GPU) でコードを実行するための gpuArray
(Parallel Computing Toolbox) オブジェクト処理のサポートが追加されました。
以下のことができるようになりました。
引数
OutputType
によるバイナリ出力の指定。引数
symorder
によるカスタム シンボル マッピングの指定。既定は今後'gray'
シンボル マッピングになります。ビット単位の対数尤度アルゴリズムまたは近似対数尤度アルゴリズムを使用した軟判定復調の実行
引数
OutputDataType
によるすべての組み込み数値データ型の指定。引数
PlotConstellation
による基準コンスタレーションの可視化。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)