16QAM-星形和矩形星座图调制解调MATLAB代码.doc

上传人:b****9 文档编号:74481 上传时间:2022-10-02 格式:DOC 页数:7 大小:32KB
下载 相关 举报
16QAM-星形和矩形星座图调制解调MATLAB代码.doc_第1页
第1页 / 共7页
16QAM-星形和矩形星座图调制解调MATLAB代码.doc_第2页
第2页 / 共7页
16QAM-星形和矩形星座图调制解调MATLAB代码.doc_第3页
第3页 / 共7页
16QAM-星形和矩形星座图调制解调MATLAB代码.doc_第4页
第4页 / 共7页
16QAM-星形和矩形星座图调制解调MATLAB代码.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

16QAM-星形和矩形星座图调制解调MATLAB代码.doc

《16QAM-星形和矩形星座图调制解调MATLAB代码.doc》由会员分享,可在线阅读,更多相关《16QAM-星形和矩形星座图调制解调MATLAB代码.doc(7页珍藏版)》请在冰豆网上搜索。

16QAM-星形和矩形星座图调制解调MATLAB代码.doc

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(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1