⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qam.m

📁 16QAM的调制解调
💻 M
字号:
%调制qammod(a,16); 解调用qamdemod  画星座图modmap('qam',4) 
clear;      %设置参数
M = 16;
fd=200;
fc=4*fd;
fs=4*fc;
rolloff = 0.5;
nsamp = 4;         
num=1000;          %符号个数
% ******* -----产生QAM基带信号 -----*******************************
x = randint(1,num,M);
y = qammod(x,M);
subplot(2,2,1);
plot(real(y),imag(y),'*'),title('基带星座图');
i=real(y);
q=imag(y);
%*************************************************************
% ****************----- 成形滤波 -----*****************************

filtorder = 33;                      % 滤波器长
delay = (filtorder-1)/(nsamp*2);     % 群延时
rrcfilter = rcosine(fd,nsamp*fd,'fir/sqrt',rolloff,delay);  
yi=conv(rrcfilter,upsample(i,nsamp));   
yq=conv(rrcfilter,upsample(q,nsamp));

%************************************************************
% *****************----- 加载波 -----************************
yii=interp(yi,fs/fc);%内插
yqq=interp(yq,fs/fc);
nn=1:length(yii);
yic=yii.*cos(2*pi*nn*fc/fs);% 加载波
yqc=yqq.*sin(2*pi*nn*fc/fs);% 加载波
iq = yic+yqc;

%******************-----进入信道-----******************************
iq = awgn(iq,8,'measured');      %信道中 载波噪声  
%*********************************************************
%********************----- 去载波 ------************************

ii=iq.*cos(2*pi*nn*fc/fs);
qq=iq.*sin(2*pi*nn*fc/fs);

b=fir1(32,0.2);        
yif=filter(b,1,ii); 
yqf=filter(b,1,qq); 

yiw=2.*downsample(yif,fs/fc,0);
yqw=2.*downsample(yqf,fs/fc,0);
subplot(2,2,3);
plot(1:500,yiw(1+4:500+4),'r',1:500,yi(1:500),'g'),title('红载波后,绿载波前');
%***********************************************************
% ******************----- 匹配 -----***********************
icc=conv(rrcfilter,yiw);
qcc=conv(rrcfilter,yqw);

icr=downsample(icc,nsamp,0);
qcr=downsample(qcc,nsamp,0);

ic=icr(2+delay*2:length(icr)-delay*2+1);      %去掉冗余
qc=qcr(2+delay*2:length(icr)-delay*2+1);

%********************************************************
%*********************画出重构星座图
subplot(2,2,2);
plot(ic,qc,'*'),title('重构星座图');

%************************ 判 决******************************
iq2=ic+j.*qc;
z = qamdemod(iq2,M);
err=abs(z-x);       %与原信号比较
subplot(2,2,4);
plot(err);
numerr=(length(find(err>0)))/num;       %画出错误符号
numerr
%*********************** 结束 ********************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -