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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%%

%

软件无线电课程设计

%

%

方形、星形16QAM 调制解调仿真 %

%% ----------------------------------------------------------- %%主程序

clc

clear

%%定义参数 fd=250*10A 6;

fs=2500*10A 6;

fc=2500*10A6;

f=10000*10A6;

data_le n=200000;

sym 」

en=data_len/4; %码

元序列长度 M_QAM=16;%QAM 数

k=log2(M_QAM);

SNR=1:12;%白噪声信噪比,

%% -----------------------------------------------------------

bit_tx=randint(1,data_len);% 产生随机序列 echo off;

rec_qam16=QamMod(bit_tx,16); star_qam16=SrarQamMod(bit_tx);

base_rec=base_shape(fd,fs,f,rec_qam16); % 基带成型滤波

base_star=base_shape(fd,fs,f,star_qam16); % 基带成型滤波

%方形映射16QAM rf_rec_qam16=CarrierMod(fc,f,base_rec); % 载波调制

rf_rec_qam16_ n=awg n( rf_rec_qam16,SNR(i),'measured'); % 加噪声

[rec_qam16_rx base_rec_rx]=CarrierDemod(fd,fs,fc,f,rf_rec_qam16_ n);

% 载波解调 bit_rec_rx=QamDemod(rec_qam16_rx,16); %MQAM 解调

[nu m_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=awg n(rf_star_qam16,SNR(i),'measured'); % 加噪声

%码元速率250M %滤波器采样率 %载波频率2.5G %对载波采样 %数据长度 %方形16QAM 调制

%星形16QAM 调制

for i=1:le

ngth(SNR) SNR_=i %信噪比从1dB 到12dB 计算误码率

[star_qam16_rx base_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:le ngth(SNR);

for i=1:le ngth(SNRtheo)

SNRdec=104(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))); subplot(413);

plot(t,real(base_star_rx(t))); subplot(414);

plot(t,imag(base_star_rx(t)));

%基带眼图

N1=20000;

Tn=f/fd;

eye_rex=base_rec(1:N1); eyediagram(eye_rex,T n*4,T n); eye_star=base_star(1:N1); eyediagram(eye_star,T n*4,T n); title('方形映射-I路'); title('星形映射-Q路'); title('星形映射-I路');

title('方形基带眼图');

title('星形基带眼图');

%%接收端星座图

%scatterplot(qam16_data_rec(12,:)); figure('Name','方形16QAM接收端星座图');

for i=3:3:12

subplot(2,2,i/3);

plot(real(qam16_data_rec(i,:)),imag(qam16_data_rec(i,:)),'.');

xmax=5;axis([-xmax xmax -xmax xmax]) title(['S nr=', nu

m2str(SNR(i)),' dB']); end figure('Name','星形16QAM接收端星座图'); for i=3:3:12

subplot(2,2,i/3);

plot(real(qam16_data_star(i,:)),imag(qam16_data_star(i,:)),'.');

xmax=3;axis([-xmax xmax -xmax xmax])

grid on; title(['S nr=', nu m2str(SNR(i)),' dB']);

end %%功率谱密度

f_plot;

%%误码率分析

%16QAM误码率曲线

figure('Name','16QAM 误码性能对比'); %

semilogy(SNRtheo,theo_perr_qam16); % hold on;

semilogy(SNR,perr_qam16_rec,'*');

hold on; semilogy(SNR,perr_qam16_star,'o'); xlabel('SNR in dB'); ylabel('Prb of Err');

legend('方形16QAM','星形16QAM'); title('16QAM误码性能对比');

% -----------------------------------------------------------------------------

%%基带成型

相关文档
最新文档