首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中生成64或128 qam

如何在matlab中生成64或128 qam
EN

Stack Overflow用户
提问于 2017-01-17 18:59:53
回答 2查看 922关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2017-01-17 20:21:37

假设您想要为M=2^b生成一个QAM。然后,您需要星座点,这些星座点通过M_Q = 2^b_Q点形成M_I = 2^b_I的网格,其中M = M_I*M_Qb_I+b_Q==b。均匀分布,我们得到b_I = floor(b/2);b_Q = ceil(b/2);

这样,您就可以通过形成实部和虚部的1-D网格来设置网格,然后将它们连接到2-D网格。如下所示:

代码语言:javascript
复制
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。

票数 0
EN

Stack Overflow用户

发布于 2017-01-18 17:56:42

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

代码语言:javascript
复制
% 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41695358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档