close all
clear all
%%%%%%%%%%%%%%%第1部分总体参数设置
k=14;%采样点数的设置
L= 8;%每码元采样数的设置
N=2^k;
M=N/L;%M为码元个数
dt=1/L;%时域采样间隔
T=N*dt;%时域截断区间
df=1.0/T;%频域采样间隔
Bs=N*df/2;%频域截断区间
fc=4;%载波频率
B=2; %2倍码元速率
P=zeros(1,11); %定义1个误码率空矩阵
t=linspace(-T/2,T/2,N);%产生时域采样点
f=linspace(-Bs,Bs,N);%产生频域采样点
EP1=zeros(size(f));
EP2=zeros(size(f));
EP3=zeros(size(f));
%程序第2部分:在不同信噪比下随机产生1000列0、1信号序列,分别对其进行双极性编码,并且求各自的功率谱密度,求功率谱密度的均值
for snr=0:10
pp=0;
for x=1:1000 %取1000次样值
a=round(rand(1,M));%产生一个长度为M的随机序列a,0和1等概出现
b=zeros(1,M);%产生一个1行M列的相对码矩阵,初始化为全0矩阵
nrz=zeros(L,M);%产生一个L行M列的nrz矩阵,初始化为全0矩阵
z=zeros(L,M);%产生一个L行M列的相对码矩阵,初始化为全0矩阵
%相对码变换
for i=1:M
if i==1
b(i)=a(i);
else
b(i)=xor(a(i),b(i-1));
end
end
for i=1:M
if a(i)==1
z(:,i)=1;%使z矩阵第i列全部元素都为1
else
z(:,i)=0;%使z矩阵第i列全部元素都为-1
end
end
for i=1:M
if b(i)==1
nrz(:,i)=1;%使nrz矩阵第i列全部元素都为1
else
nrz(:,i)=-1;%使nrz矩阵第i列全部元素都为-1
end
end
%分别重排nrz、z矩阵为1行N列的矩阵
nrz=reshape(nrz,1,N);
z=reshape(z,1,N);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号
s1=sin(2*pi*fc*t);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制
bdpsk=nrz.*s1;
%做傅里叶变换并算出功率谱密度
BDPSK=t2f(bdpsk,dt);
P1=BDPSK.*conj(BDPSK)/T;
%求功率谱密度的均值
EP1=(EP1*(x-1)+P1)/x;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号调制中加入白噪声,信噪比为snr相乘
bdpsk=awgn(bdpsk,snr);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调
aaa=bdpsk.*s1;%与载波相乘
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%通过低通滤波器
[f,af] = T2F1(t,aaa);
[t,aaa] = lpf(f,af,B);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决整形
bbb=aaa; %定义数组
eee=aaa;
for m=0:M-1;
if aaa(1,m*L+L/2)<0;
for j=m*L+1:(m+1)*L;
bbb(1,j)=0;
eee(1,j)=-1;
end
else
for j=m*L+1:(m+1)*L;
bbb(1,j)=1;
eee(1,j)=1;
end
end
if eee(1,m*L+1)~=nrz(1,m*L+1);
pp=pp+1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相对码变绝对码
ccc=bbb; %定义数组
ddd=bbb;
for kk=L+1:M*L-L;
ddd(1,kk)=bbb(1,kk+L);
end
for kk=1:L;
ddd(1,kk)=0;
end
for mm=1:M*L;
ccc(1,mm)=xor(bbb(1,mm),ddd(1,mm));
end
end
%%%%%%%%%%%%%%%%5计算实际信噪比
P(1,snr+1)=pp/(1000*M);
end
%程序第3部分:画图
figure(1)%开启一个编号为1的绘图窗口
subplot(2,2,1);plot(t,z)%画基带码的时域图
axis([0,10,min(z)-0.1,max(z)+0.1])
set(gca,'FontSize',12)
title('基带','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('z(t)','fontsize',12)
grid on
subplot(2,2,2);plot(t,nrz)%画相对码的时域图
axis([0,10,min(nrz)-0.1,max(nrz)+0.1])
set(gca,'FontSize',12)
title('相对码','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('nrz(t)','fontsize',12)
grid on
subplot(2,2,3); %画载波信号
plot(s1);
title('载波信号');
subplot(2,2,4); %画调制信号
plot(t,bdpsk);
title('DPSK信号');
figure(2)%开启一个编号为2的绘图窗口
subplot(1,1,1);plot(f,EP1)%画调制信号功率谱密度图
axis([-5,5,0,1.2])
title('DPSK调制功率谱密度图','fontsize',12)
xlabel('f(kHz)','fontsize',12)
ylabel('P1(f)','fontsize',12)
grid on
figure(3)%开启一个编号为3的绘图窗口
subplot(3,1,1);plot(t,aaa)%画滤波后的时域图
axis([0,10,min(aaa)-0.1,max(aaa)+0.1])
set(gca,'FontSize',12)
title('低通滤波后波形','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('aaa(t)','fontsize',12)
grid on
subplot(3,1,2);plot(t,bbb)%画整形后的时域图
axis([0,10,min(bbb)-0.1,max(bbb)+0.1])
set(gca,'FontSize',12)
title('整形后波形','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('bbb(t)','fontsize',12)
grid on
subplot(3,1,3);plot(t,ccc)%画码反变换后的时域图
axis([0,10,min(ccc)-0.1,max(ccc)+0.1])
set(gca,'FontSize',12)
title('码反变换后波形','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('ccc(t)','fontsize',12)
grid on
%标准误码率随信噪比变化曲线
theo_err_prb=zeros(1,11);
snrb=0:1:10;%信噪比范围
len_snrb=length(snrb);
for i=1:len_snrb
SNR_eb=exp(snrb(i)*log(10)/10);
theo_err_prb(i)=erfc(sqrt(SNR_eb));%DPSK系统的标准误码率与信噪比的关系
end
%%%%%%%%%%%%%%绘制误码率曲线
fff=0:1:10;
figure(4)%开启一个编号为4的绘图窗口
semilogy(fff,P,'ro-'); %实际误码率曲线
hold on
semilogy(fff,theo_err_prb,'bx-');%标准误码率曲线
grid on;
title('误码率随信噪比的变化曲线');
2dpsk.rar_c
版权申诉
21 浏览量
2022-09-21
01:48:40
上传
评论
收藏 11KB RAR 举报
小贝德罗
- 粉丝: 71
- 资源: 1万+
最新资源
- zbar libiconv.so libzbarjni.so 32 64位的配置包
- 基于stm32的家庭湿度控制系统的设计与实现源码+文档说明(高分项目)
- 一个简单的Python程序,它使用socket库来实现一个UDP服务器,该服务器接收UDP消息,然后通过TCP连接将消息转发给T
- OpenVINO CSharp 异步推理接口部署YOLOv8 代码
- 问题解决教程.docx
- Matlab箱线图教程.txt
- 基于树莓派的智能小车:自动避障,实时图像传输,目标检测,网球追踪
- 百度AI-语音合成练习
- 操作系统复习(极速版)
- 一个数字信号处理的例子,包括信号的采样、带噪信号的生成、使用低通滤波器滤波,并绘制结果
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0