16QAM-星形和矩形星座图调制解调MATLAB代码.doc
- 文档编号:74481
- 上传时间:2022-10-02
- 格式:DOC
- 页数:7
- 大小:32KB
16QAM-星形和矩形星座图调制解调MATLAB代码.doc
《16QAM-星形和矩形星座图调制解调MATLAB代码.doc》由会员分享,可在线阅读,更多相关《16QAM-星形和矩形星座图调制解调MATLAB代码.doc(7页珍藏版)》请在冰豆网上搜索。
word格式-可编辑-感谢下载支持
%%------------------------------------------------------------
%软件无线电课程设计
%
%方形、星形16QAM调制解调仿真
%
%%------------------------------------------------------------
%%主程序
clc
clear
%%定义参数
fd=250*10^6;%码元速率250M
fs=2500*10^6;%滤波器采样率
fc=2500*10^6;%载波频率2.5G
f=10000*10^6;%对载波采样
data_len=200000;%数据长度
sym_len=data_len/4;%码元序列长度
M_QAM=16;%QAM数
k=log2(M_QAM);
SNR=1:
12;%白噪声信噪比,
%%------------------------------------------------------------
bit_tx=randint(1,data_len);%产生随机序列
echooff;
rec_qam16=QamMod(bit_tx,16);%方形16QAM调制
star_qam16=SrarQamMod(bit_tx);%星形16QAM调制
base_rec=base_shape(fd,fs,f,rec_qam16);%基带成型滤波
base_star=base_shape(fd,fs,f,star_qam16);%基带成型滤波
fori=1:
length(SNR)%信噪比从1dB到12dB计算误码率
SNR_=i
%方形映射16QAM
rf_rec_qam16=CarrierMod(fc,f,base_rec);%载波调制
rf_rec_qam16_n=awgn(rf_rec_qam16,SNR(i),'measured');%加噪声
[rec_qam16_rxbase_rec_rx]=CarrierDemod(fd,fs,fc,f,rf_rec_qam16_n);%载波解调
bit_rec_rx=QamDemod(rec_qam16_rx,16);%MQAM解调
[num_qam16,perr_qam16_rec(i)]=biterr(bit_tx,bit_rec_rx);%误码率
qam16_data_rec(i,:
)=rec_qam16_rx;
%scatterplot(rec_qam16_rx);
%星形映射16QAM
rf_star_qam16=CarrierMod(fc,f,base_star);%载波调制
rf_star_qam16_n=awgn(rf_star_qam16,SNR(i),'measured');%加噪声
[star_qam16_rxbase_star_rx]=CarrierDemod(fd,fs,fc,f,rf_star_qam16_n);%载波解调
bit_star_rx=StarQamDemod(star_qam16_rx);%MQAM解调
[num_qam16,perr_qam16_star(i)]=biterr(bit_tx,bit_star_rx);%误码率
qam16_data_star(i,:
)=star_qam16_rx;
%scatterplot(star_qam16_rx);
end
%%理论误码率计算
SNRtheo=0:
0.1:
length(SNR);
fori=1:
length(SNRtheo)
SNRdec=10.^(SNRtheo(i)/10);
theo_perr_qam16(i)=(3/8)*erfc(sqrt(SNRdec*2/5));
end
%%基带波形
N=200;
n=1:
N;
t=1:
N*10;
%发送端波形
figure;
stem(n,bit_tx(n));title('发送序列');%发送序列
figure('Name','发送端基带信号');
subplot(411);
plot(t,real(base_rec(t)));title('方形映射-Q路');
subplot(412);
plot(t,imag(base_rec(t)));title('方形映射-I路');
subplot(413);
plot(t,real(base_star(t)));title('星形映射-Q路');
subplot(414);
plot(t,imag(base_star(t)));title('星形映射-I路');
%接收端波形
figure;
subplot(211);
stem(n,bit_rec_rx(n));title('方形接收序列');
subplot(212);
stem(n,bit_star_rx(n));title('星形接收序列');
figure('Name','接收端基带信号');
subplot(411);
plot(t,real(base_rec_rx(t)));title('方形映射-Q路');
subplot(412);
plot(t,imag(base_rec_rx(t)));title('方形映射-I路');
subplot(413);
plot(t,real(base_star_rx(t)));title('星形映射-Q路');
subplot(414);
plot(t,imag(base_star_rx(t)));title('星形映射-I路');
%基带眼图
N1=20000;
Tn=f/fd;
eye_rex=base_rec(1:
N1);
eyediagram(eye_rex,Tn*4,Tn);title('方形基带眼图');
eye_star=base_star(1:
N1);
eyediagram(eye_star,Tn*4,Tn);title('星形基带眼图');
%%接收端星座图
%scatterplot(qam16_data_rec(12,:
));
figure('Name','方形16QAM接收端星座图');
fori=3:
3:
12
subplot(2,2,i/3);
plot(real(qam16_data_rec(i,:
)),imag(qam16_data_rec(i,:
)),'.');
xmax=5;axis([-xmaxxmax-xmaxxmax])
title(['Snr=',num2str(SNR(i)),'dB']);
end
figure('Name','星形16QAM接收端星座图');
fori=3:
3:
12
subplot(2,2,i/3);
plot(real(qam16_data_star(i,:
)),imag(qam16_data_star(i,:
)),'.');
xmax=3;axis([-xmaxxmax-xmaxxmax])
gridon;title(['Snr=',num2str(SNR(i)),'dB']);
end
%%功率谱密度
f_plot;
%%误码率分析
%16QAM误码率曲线
figure('Name','16QAM误码性能对比');
%semilogy(SNRtheo,theo_perr_qam16);
%holdon;
semilogy(SNR,perr_qam16_rec,'*');
holdon;
semilogy(SNR,perr_qam16_star,'o');
xlabel('SNRindB');
ylabel('PrbofErr');
legend('方形16QAM','星形16QAM');
title('16QAM误码性能对比');
%-------------------------------------------------------------------------------
%%基带成型
functionbase_info=base_shape(fd,fs,f,seq_16QAM)
%平方根升余弦滤波器,滚降系数0.5,延迟3个采样点
flt=rcosine(fd,fs,'sqrt',0.5);
%I路和Q路
seq_Q=real(seq_16QAM);
seq_I=imag(seq_16QAM);
%增采样
R=fs/fd;
up_seq_Q=upsample(seq_Q,R);
up_seq_I=upsample(seq_I,R);
%升余弦调制
rcos_Q=conv(up_seq_Q,flt);
rcos_I=conv(up_seq_I,flt);
%提升
rcos_Q_up=interp(rcos_Q,f/fs);
rcos_I_up=interp(rcos_I,f/fs);
base_info=rcos_Q_up+j*rcos_I_up;
%--------------------------------------------------------------------
%%载波解调
function[data_rxbase_rx]=CarrierDemod(fd,fs,fc,f,receive)
%%分两路乘正交高频载波
rc_length=length(receive);
flt=rcosine(fd,fs,'sqrt',0.5);
t=0:
rc_length-1;
rc_Q=receive.*sin(2*pi*fc*t/f);
rc_I=receive.*cos(2*pi*fc*t/f);
%减采样后根升余弦匹配滤波,注意对齐采样点
down_Q=downsample([0rc_Q],f/fs);
down_I=downsample(rc_I,f/fs);
low_Q_rcos=conv(down_Q,flt);
low_I_rcos=conv(down_I,flt);
base_rx=low_Q_rcos(1:
length(low_I_rcos))+j*low_I_rcos;
%两次根升余弦滤波延迟,定位初始信号位置
%delay+1:
end-delay-1
R=fs/fd;
delay=3*R*2;
rc_Q_seq=(downsample(low_Q_rcos(delay+1:
end-delay-1),R));
rc_I_seq=(downsample(low_I_rcos(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 QAM 星形 矩形 星座图 调制 解调 MATLAB 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)