📄 aqammod.m
字号:
function [iout,qout]=aqammod(x,ml)
%本函数是实现星形qam调制的文件
%data:随机产生的bit
%ml: 表示调制制式8qam->3,16qam->4,32qam->5,64qam->6
%
%this file is edited at 2005-08-23
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=length(x);
b=0;
%*********************************
if (mod(N,ml)~=0)
b=ml-(N-ml*(floor(N/ml)));
nx=zeros(1,N+b);
end
nx(1:N)=x;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
n=0;m=1;
%theta=zeros(1,(length(nx)/ml));
mi4=randint(1,N,4);
switch (ml)
case{3} %8qam modulation
M=4;
for i=1:ml:length(nx)
m=m+n;
%mi=nx(i)*2+nx(i+1)*1;
s2=[1 2.4];
theta=(2*pi*mi4(i))/M;
A=s2(nx(i+ml-1)+1);
iout(m)=A.*cos(theta);
qout(m)=A.*sin(theta);
n=n+1;
end
case{4}
M=8;
for i=1:ml:length(nx)
m=m+n;
mi=nx(i)*4+nx(i+1)*2+nx(i+2)*1;
s2=[1 1.8];
theta=(2*pi*mi)/M;
A=s2(nx(i+ml-1)+1);
iout(m)=A.*cos(theta);
qout(m)=A.*sin(theta);
n=n+1;
[iout(m) iout(m+1)]=gngauss;
[qout(m) qout(m+1)]=gngauss;
end
case{5}
M=8;
for i=1:ml:length(nx)
m=m+n;
mi=nx(i)*4+nx(i+1)*2+nx(i+2)*1;
s4=[1 1.77 2.54 3.318];
theta=(2*pi*mi)/M;
A=s4(nx(i+ml-2)*2+nx(i+ml-1)+1);
iout(m)=A.*cos(theta);
qout(m)=A.*sin(theta);
n=n+1;
end
case{6}
M=16;
for i=1:ml:length(nx)
m=m+n;
mi=nx(i)*8+nx(i+1)*4+nx(i+2)*2+nx(i+3);
s4=[1 1.4 1.81 2.23];
theta=(2*pi*mi)/M;
A=s4(nx(i+ml-2)*2+nx(i+ml-1)+1);
iout(m)=A.*cos(theta);
qout(m)=A.*sin(theta);
n=n+1;
end
otherwise
iout=[iout 0];
qout=[qout 0];
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -