2017-01-17 1 views

答えて

0

M=2^bのQAMを生成したいとします。次に、M_I = 2^b_Iの格子を形成するコンスタレーションポイントがM_Q = 2^b_Qポイントであり、M = M_I*M_Q、したがってb_I+b_Q==bである必要があります。均等に配信すると、b_I = floor(b/2);b_Q = ceil(b/2);となります。

実数部と虚数部の1-Dグリッドを作成して格子を設定し、2-D格子に接続します。このように:さえbため、:

b = 6; 
M = 2^b; % b = 6: 64-QAM, b = 7: 128-QAM, etc. 
b_I = floor(b/2); 
M_I = 2^b_I; 
b_Q = ceil(b/2); 
M_Q = 2^b_Q; 
x_I = -(M_I-1)/2:(M_I-1)/2; 
x_Q = -(M_Q-1)/2:(M_Q-1)/2; 
x_IQ = repmat(x_I,[M_Q,1]) + 1i*repmat(x_Q.',[1,M_I]); 
x_IQ = x_IQ/sqrt((M_I^2+M_Q^2-2)/12); 

R2016bで、第二の最後の行がx_IQ = x_I + 1i*x_Q.';に簡略化することができることを注意また、最後の行は(注意自分の星座が1シンボル当たりの平均エネルギーを有するすることを保証します正規化をsqrt((M-1)/6)に簡略化することができます)。

ここで、x_IQは、可能性のあるコンステレーションポイントをすべて含む配列です。 は、ランダムな記号を描く奇数bこのスクリプトは、矩形QAMを生成することs = x_IQ(randi(M,NSymbols,1));

注を使用する(例えば、128-QAMのためには、16×8コンステレーションです)。コンスタレーションポイントをより対称的に配置することで、他の方法もあります。それを行う独自の方法はありませんが、必要な場合はどちらを指定する必要があります。実際には、通常bのQAMも使用します。

0

回答が見つかりました!任意の数の64,256または2乗の場合、次のように簡単に生成できます。

% matlab code to generate 64 qam 
m = 0; n = 0; 
for k = -7:2:7 
    m = m+1; 
    for l = -7:2:7 
     n = n+1; 
    x(m,n) = k+j*l; 
    end 
    n = 0; 
end 
+0

さて、あなたは私の解決策が気に入らないようです。おそらくそれはあまりにも複雑に見えました。もちろん、あなた自身が答えを見つけたことは良いことです。それは学ぶ最も良い方法です!ちょうどメモ:本質的に私のソリューションはあなたと同じですが、2のパワーを扱うことができ、ループがないので少し速くなります。スピードは大きな懸念事項ではないかもしれませんが。あなたの星座は単位エネルギーに正規化されていないことに注意してください。そうすることができます。 – Florian

関連する問題