genqammod
一般的な直交振幅変調 (QAM)
説明
例
ガウス ノイズが存在する場合は非矩形の 16 配列コンスタレーションを使用してデータの送受信を行います。ノイズを含むコンスタレーションの散布図を表示し、2 つの異なる SNR についてシンボル エラー レート (SER) を見積もります。
電話回線モデムに対し、V.29 規格に基づいて 16-QAM コンスタレーションを作成します。
c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i]; sigpower = pow2db(mean(abs(c).^2)); M = length(c);
ランダムなシンボルを生成します。
data = randi([0 M-1],2000,1);
関数 genqammod を使用してデータを変調します。カスタム コンスタレーションは矩形ではないため、一般的な QAM 変調が必要です。
modData = genqammod(data,c);
SNR が 20 dB の AWGN チャネル経由で信号を渡します。
rxSig = awgn(modData,20,sigpower);
受信信号と基準コンスタレーション c の散布図を表示します。
h = scatterplot(rxSig); hold on scatterplot(c,[],[],'r*',h) grid hold off

関数 genqamdemod を使用して、受信した信号を復調します。シンボル エラー数と SER を求めます。
demodData = genqamdemod(rxSig,c); [numErrors,ser] = symerr(data,demodData)
numErrors = 4
ser = 0.0020
SNR が 10 dB の AWGN チャネル経由で送信と復調の処理を繰り返します。低減された SNR について SER を判別します。予想どおり、SNR が低下するとパフォーマンスも低下します。
rxSig = awgn(modData,10,sigpower); demodData = genqamdemod(rxSig,c); [numErrors,ser] = symerr(data,demodData)
numErrors = 457
ser = 0.2285
六角形のコンスタレーションを描く点を作成します。
inphase = [1/2 1 1 1/2 1/2 2 2 5/2]; quadr = [0 1 -1 2 -2 1 -1 0]; inphase = [inphase;-inphase]; inphase = inphase(:); quadr = [quadr;quadr]; quadr = quadr(:); const = inphase + 1i*quadr;
コンスタレーションをプロットします。
h = scatterplot(const);

入力データのシンボルを生成します。このコンスタレーションを使用してシンボルを変調します。
x = [3 8 5 10 7]; y = genqammod(x,const);
変調した信号 y を復調します。
z = genqamdemod(y,const);
変調した信号を同じ Figure にプロットします。
hold on; scatterplot(y,1,0,'ro',h); legend('Constellation','Modulated signal'); hold off;

復調したデータと元のシーケンスの間のシンボル エラー数を求めます。
numErrs = symerr(x,z)
numErrs = 0
入力引数
メッセージ信号。スカラー、ベクトル、行列、3 次元配列、4 次元配列、dlarray (Deep Learning Toolbox) オブジェクト、または gpuArray オブジェクトとして指定します。メッセージ信号は、バイナリ値であるか、[0,length(const) – 1] の範囲の整数で構成されなければなりません。X が複数の行をもつ行列の場合、この関数は列を個別に処理します。
詳細については、dlarray のサポートとバッチ次元を参照してください。
データ型: double | single | fi | int8 | int16 | uint8 | uint16
信号マッピング。複素数ベクトル、dlarray (Deep Learning Toolbox) オブジェクト、または gpuArray オブジェクトとして指定します。
データ型: double | single | fi | int8 | int16 | uint8 | uint16
複素数のサポート: あり
入力タイプ。次のいずれかのオプションとして指定します。
"integer"— メッセージ信号は [0, M-1] の範囲の整数です。ここで、M はコンスタレーションの長さです。"bit"— メッセージ信号は0と1の値を含むバイナリです。この場合、行数は log2(M) の整数倍でなければなりません。この関数は、log2(M) ビットのグループをシンボルにマッピングします。最初のビットは最上位ビット (MSB) を表し、最後のビットは最下位ビット (LSB) を表します。
出力引数
複素エンベロープ。スカラー、ベクトル、行列、3 次元配列、4 次元配列、dlarray オブジェクト、または gpuArray オブジェクトとして返されます。
データ型: double | single | fi | int8 | int16 | uint8 | uint16
複素数のサポート: あり
詳細
genqammod 関数は、dlarray (Deep Learning Toolbox) で表された入力信号をサポートします。dlarray と gpuArray の組み合わせとして入力を指定した場合、返される行列は GPU の dlarray オブジェクトになります。
dlarray オブジェクトをサポートする Communications Toolbox™ 機能の一覧については、無線用 AIを参照してください。
dlarray コード生成の制限については、コード生成における dlarray の制限事項 (MATLAB Coder)を参照してください。
バッチ観測値の数 (NB) はオプションの次元で、サポートされているどのデータ タイプであってもこの入力に追加することができます。
X— 入力データには 3 次元配列を使用できます。その場合、NSym×NChan×NB として指定します。
NSym はシンボルの数です。NChan はチャネルの数です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
この関数は、GPU 配列の入力をサポートします。詳細については、GPU を使用したシミュレーションの高速化を参照してください。
バージョン履歴
R2006a より前に導入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)