%******************** QPSK 高斯信道仿真 *************************************
%******************** 定义变量 *************************************
sr=2.0; % 符号速率
ml=2; % ml:调制阶数 (BPSK:ml=1, QPSK:ml=2, 16QAM:ml=4)
br=sr .* ml; % 比特率
Tb=1/br;
nd =20; % 发送的符号数
SNR=20; % 信噪比
fc=4; %载波频率
j=sqrt(-1);
fs=20; %sample rate
Ts=1/fs;
%*************************** 数据产生********************************
data=rand(1,nd*ml)>0.5; % 产生发送数据
[ich,qch]=qpskmap(data,nd,ml);%将输入数据分为I支路和Q支路
r=ich+j*qch;
data_wave=[];ich_wave=[];qch_wave=[];
for ii=1:nd*ml % 输入数据的波形表示
if data(ii)==1
data_wave=[data_wave ones(1,fs)];
else
data_wave=[data_wave zeros(1,fs)];
end
end
for ii=1:nd %I支路的波形表示
if ich(ii)==1
ich_wave=[ich_wave ones(1,2*fs)];
else
ich_wave=[ich_wave zeros(1,2*fs)];
end
end
for ii=1:nd % Q支路的波形表示
if qch(ii)==1
qch_wave=[qch_wave ones(1,2*fs)];
else
qch_wave=[qch_wave zeros(1,2*fs)];
end
end
%******************************* QPSK调制 **********************************
t=1/40:1/40:nd;
ich_mod=1/sqrt(2)*cos(2*pi*fc*t).*(ich_wave*2-1); %对I支路进行调制
qch_mod=-1/sqrt(2)*sin(2*pi*fc*t).*(qch_wave*2-1); %对Q支路进行调制
data_t=ich_mod+qch_mod;
%******************************* 叠加噪声 **********************************
spow=sum(ich_mod.*ich_mod+qch_mod.*qch_mod)/nd; % sum: built in function
attn=0.5*spow*sr/br*10.^(-SNR/10);
attn=sqrt(attn); % sqrt: built in function
noise=randn(size(data_t)).*attn; %产生高斯噪声
data_noise=data_t+noise;
%******************************* 解调 **********************************
local_carrier_i=1/sqrt(2)*cos(2*pi*fc*[1/40:1/40:nd]);%%I支路的同步载波
dem_i=local_carrier_i.*data_noise;
i_receive_wave=[];
i_data=[];
for ii=1:nd
res_i(ii)=sum(dem_i((ii-1)*2*fs+1:1:ii*2*fs));
if res_i(ii)>0
i_receive_wave=[i_receive_wave ones(1,2*fs)];
i_data=[i_data 1];
else
i_receive_wave=[i_receive_wave zeros(1,2*fs)];
i_data=[i_data 0];
end
end
q_receive_wave=[];q_data=[];
local_carrier_q=-1/sqrt(2)*sin(2*pi*fc*[1/40:1/40:nd]);%%Q支路的同步载波
dem_q=local_carrier_q.*data_noise;
data_dem=dem_i+dem_q;
for ii=1:nd %解调
res_q(ii)=sum(dem_q((ii-1)*2*fs+1:1:ii*2*fs));
if res_q(ii)>0
q_receive_wave=[q_receive_wave ones(1,2*fs)];
q_data=[q_data 1];
else
q_receive_wave=[q_receive_wave zeros(1,2*fs)];
q_data=[q_data 0];
end
end
[data_receive]=qpskdemap(i_data,q_data,nd,ml);%将输出I支路和Q支路合并
data_receive_wave=[];
for ii=1:nd*ml %输出数据波形
if data_receive(ii)==1
data_receive_wave=[data_receive_wave ones(1,fs)];
else
data_receive_wave=[data_receive_wave zeros(1,fs)];
end
end
gu=sqrt(res_i.^2+res_q.^2);
oo=res_i+res_q;
res=res_i+j*res_q;
%******************************* 画图 **********************************
tt=0:1/br/20:ml*nd*1/br-1/br/20;
figure(1)
subplot(211)
plot( tt,data_wave,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %发送数据的波形
grid minor
xlabel('Time(s)')
ylabel('Amplitude')
title(' Input baseband waveform');
subplot(212)
data_fft=abs(fft(data_wave));
data_num=length(data_wave);
data_f=-sr/Ts:2*sr/(Ts*(data_num-1)):sr/Ts;
plot(data_f,10*log10((fftshift(data_fft)).^2/(data_num-1)));%发送数据的功率谱
%plot(data_f,fftshift(data_fft).^2/(data_num-1));
grid minor
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
title('the PSD of input baseband waveform');
figure(2)
subplot(221)
tt=0:1/br/20:ml*nd*1/br-1/br/20;
plot(tt,data_t,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %调制后波形
title('the modulated waveform ');
xlabel('Time(s)')
ylabel('Amplitude')
grid minor
subplot(222)
data_t_fft=abs(fft(data_t));
data_t_num=length(data_t);
data_t_f=-1/Ts:2/(Ts*(data_t_num-1)):1/Ts;
plot(data_t_f,10*log10((fftshift(data_t_fft)).^2/(data_t_num-1)));%调制后的信号功率谱密度
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
grid minor
%pwelch(qch_mod,33,32,[],1000,'twosided');
title('the PSD of QPSK modulated signal ');
subplot(223)
tt=0:1/br/20:ml*nd*1/br-1/br/20;
plot(tt,data_noise,'LineWidth',1.5);axis([0,ml*nd*1/br,-2,2]); %叠加噪声后的输出
title('AWGN channel output');
xlabel('Time(s)')
ylabel('Amplitude')
grid minor
subplot(224)
data_noise_fft=abs(fft(data_noise));
data_noise_num=length(data_noise);
data_noise_f=-1/Ts:2/(Ts*(data_noise_num-1)):1/Ts;
plot(data_noise_f,10*log10((fftshift(data_noise_fft)).^2/(data_noise_num-1)));%叠加噪声后信号的功率谱密度
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
grid minor
%pwelch(qch_mod,33,32,[],1000,'twosided');
title('the PSD of QPSK modulated signal after AWGN channel ');
figure(3)
subplot(211)
tt=0:1/br/20:ml*nd*1/br-1/br/20;
plot(tt,data_dem,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %解调后的波形
title('the demodulated waveform ');
xlabel('Time(s)')
ylabel('Amplitude')
grid minor
subplot(212)
data_dem_fft=abs(fft(data_dem));
data_dem_num=length(data_dem);
data_dem_f=-1/Ts:2/(Ts*(data_dem_num-1)):1/Ts;
plot(data_dem_f,10*log10((fftshift(data_dem_fft)).^2/(data_dem_num-1)));%解调后的功率谱密度
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
grid minor
%pwelch(qch_mod,33,32,[],1000,'twosided');
title('the PSD of demodulated signal ');
figure(4)
subplot(211)
plot( tt,data_wave,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %发送数据的波形
grid minor
xlabel('Time(s)')
ylabel('Amplitude')
title(' Input baseband waveform');
subplot(212)
plot( tt,data_wave,'r','LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %发送数据的波形
hold on
plot( tt,data_receive_wave,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %接收数据的波形
xlabel('Time(s)')
ylabel('Amplitude')
legend('the red is error bit')
grid minor
title(' Output baseband waveform');
hold off
figure(5)
subplot(211)
data_t_fft=abs(fft(data_t));
data_t_num=length(data_t);
data_t_f=-1/Ts:2/(Ts*(data_t_num-1)):1/Ts;
plot(data_t_f,10*log10((fftshift(data_t_fft)).^2/(data_t_num-1)));%调制后的信号功率谱密度
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
%pwelch(qch_mod,33,32,[],1000,'twosided');
title('the PSD of QPSK modulated signal ');
grid minor
subplot(212)
data_noise_fft=abs(fft(data_noise));
data_noise_num=length(data_noise);
data_noise_f=-1/Ts:2/(Ts*(data_noise_num-1)):1/Ts;
plot(data_noise_f,10*log10((fftshift(data_noise_fft)).^2/(data_noise_num-1)));%叠加噪声后信号的功率谱密度
xlabel('Frequence(Hz)')
ylabel('Power/frequence(dB/Hz)')
%pwelch(qch_mod,33,32,[],1000,'twosided');
title('the PSD of QPSK modulated signal after AWGN channel ');
grid minor
figure(6)
subplot(211)
tt=0:1/br/20:ml*nd*1/br-1/br/20;
plot(tt,data_t,'LineWidth',1.5);axis([0,ml*nd*1/br,-1.5,1.5]); %调制后波形
title('the modulated waveform ');
xlabel('Time(s)')
ylabel('Amplitude')
grid minor
subplot(212)
tt=0:1/br/20:ml*nd*1/br-1/br/20;
plot(tt,data_noise,'LineWidth',1.5);axis([0,ml*nd*1/br,-2,2]); %叠加噪声后的输出
title('AWGN channel output');
xlabel('Time(s)')
ylabel('Amplitude')
grid minor
%scatterplot(r);
%grid on
%scatterplot(res);
%grid on
qpsk.rar_瑞丽分布matlab
版权申诉
148 浏览量
2022-09-20
18:24:10
上传
评论
收藏 14KB RAR 举报
局外狗
- 粉丝: 69
- 资源: 1万+
最新资源
- GM-T 108-2021 诱骗态84量子密钥分配产品技术规范
- baiduwenku_AndroidPhone_1027470h-1718616594228.apk
- 飞飞CMS仿零零七影院网站模板
- GM-T 0109-2021 基于云计算的电子签名服务技术要求
- content_1718616449016.docx
- GM-T 0118-2022 浏览器数字证书应用接口规范
- 基于微信考试答题小程序设计与实现
- jdk-8u191-linux-x64.tar.gz jdk-8u191-linux-x64.tar.gz
- 输入文件备份位置自动备份测量程序操作方法
- GM-T 0122-2022 区块链密码检测规范
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0