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
入力引数
信号マッピング。複素数ベクトル、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 オブジェクトとして返されます。
x と const のいずれかが gpuArray オブジェクトである場合、y は gpuArray オブジェクトになります。x と const のいずれかが dlarray オブジェクトである場合、y は dlarray オブジェクトになります。
整数入力の場合、出力 Y の次元は入力信号 X と同じになります。ビット入力の場合、Y の行数は X の行数を log2(M) で除算した値になります。
データ型: double | single | fi | int8 | int16 | uint8 | uint16
複素数のサポート: あり
詳細
関数 genqammod は、数値配列、dlarray (Deep Learning Toolbox)、または gpuArray (Parallel Computing Toolbox) で表された入力信号をサポートします。dlarray と gpuArray の組み合わせとして入力を指定した場合、返される行列は GPU の dlarray オブジェクトになります。
バッチ観測値の数 (NB) はオプションの次元で、サポートされているどのデータ タイプであってもこの入力に追加することができます。
X— 入力データには 3 次元配列を使用できます。その場合、NSym×NChan×NB として指定します。
NSym はシンボルの数です。NChan はチャネルの数です。
dlarray オブジェクトをサポートする Communications Toolbox™ 機能の一覧については、無線用 AIを参照してください。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
この関数は、GPU 配列の入力をサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
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)