如何在matlab中生成64或128 qam

时间:2017-01-17 10:59:53

标签: matlab

如何在不使用信号处理/通信工具箱的情况下在MATLAB中生成64或128 QAM信号。是否有任何创建高阶qams的通用方法?

2 个答案:

答案 0 :(得分:0)

假设您要为M=2^b生成QAM。然后你需要星座点,M_I = 2^b_IM_Q = 2^b_Q点,M = M_I*M_Q,因此b_I+b_Q==b形成b_I = floor(b/2);点阵。分布均匀,我们得到b_Q = ceil(b/2);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);

这已建立,您通过为实部和虚部形成1-D网格来建立晶格,然后将它们连接到2-D晶格。像这样:

x_IQ = x_I + 1i*x_Q.';

请注意,在R2016b中,倒数第二行可以简化为b此外,最后一行确保您的星座每个符号的平均能量为1(注意:偶数sqrt((M-1)/6) ,规范化可以简化为x_IQ)。

现在,s = x_IQ(randi(M,NSymbols,1));是一个包含所有可能的星座点的数组。 要绘制随机符号,请使用b

注意,对于奇数b,此脚本生成矩形QAM(例如,对于128-QAM,它是16x8星座)。通过使星座点更加对称,还有其他方法可以做到这一点。没有独特的方法可以做到这一点,如果你需要一个,你必须指定哪一个。虽然在实践中通常使用QAM甚至jsbin.com/vuyuwaduba/edit?html,output

答案 1 :(得分:0)

我找到了答案!如果它是64,256或任何数字的平方,那么它可以很容易地生成如下。

% 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