如何在不使用信号处理/通信工具箱的情况下在MATLAB中产生64或128 QAM信号。有没有创建高阶qams的通用方法?
发布于 2017-01-17 20:21:37
假设您想要为M=2^b生成一个QAM。然后,您需要星座点,这些星座点通过M_Q = 2^b_Q点形成M_I = 2^b_I的网格,其中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 = 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(注意:对于偶数b,归一化可以简化为sqrt((M-1)/6))。
现在,x_IQ是一个包含所有可能的星座点的数组。要绘制随机符号,请使用s = x_IQ(randi(M,NSymbols,1));
注意,对于奇数b,该脚本生成矩形QAM (例如,对于128-QAM,它是16x8星座)。还有其他方法可以通过更对称地放置星座点来实现。然而,没有唯一的方法,所以如果你需要一种,你必须指定哪一种。虽然在实践中,人们通常使用具有偶数b的QAM。
发布于 2017-01-18 17:56:42
我找到答案了!如果它是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;
endhttps://stackoverflow.com/questions/41695358
复制相似问题