16QAM-星形和矩形星座图调制解调MATLAB代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16QAM-星形和矩形星座图调制解调MATLAB代码
%%
------------------------------------------------------------ % 软件无线电课程设计
%
% 方形、星形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);%产生随机序列echo off;
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); %基带成型滤波
for
i=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),'m easured'); %加噪声
[rec_qam16_rx
base_rec_rx]=CarrierDemod(fd,fs,fc,f,rf_rec_qa m16_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_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:length(SNR);
for i=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路');