📄 bpsk.m
字号:
%BPSK调制解调系统****************
clear all
m=20;
a=randsrc(1,m,[-1,1]);%随机产生2psk的信号比特1或-1
%原始信号抽样
len=length(a);
aa=1;
Rs=1600;
nn=10;
fs=nn*Rs;
Ts=1/Rs;
al=0.375;
M=55;
%生成升余弦滤波器
htl=zeros(1,M);
for k=1:M;
t=(k-28)/fs;
W=pi*t/Ts;
if t==0
htl(k)=1;
elseif (al*W/pi==1/2)|(al*W/pi==-1/2)
htl(k)=0;
else
htl(k)=(sin(W)/W)*(cos(al*W)/(1-(4*al^2*W^2)/(pi^2)));
end
end
risecos=htl;
sig_len=len*nn;
signal=zeros(1,sig_len);
for i=1:len
signal((i-1)*nn+nn/2+1)=a(i);
end
%波形生成
sig_conv=conv(signal,risecos);
sig_part=sig_conv(28:28+sig_len);
%BPSK调制
fc=56000;
W=2*pi*fc/fs;
signal_out=zeros(1,sig_len);
for i=1:sig_len;
signal_out(1,i)=sig_part(i)*cos(W*i);
end
disp(a);
figure(1);
subplot(2,1,1);
plot(sig_part);xlim([0 200]);
title('波形成形后的信号'); % 波形成形后的信号
hold on;
plot(signal,'red');xlim([0 200]); % 调制信号
title('2psk调制信号');
subplot(2,1,2);plot(signal_out);xlim([0,200]); % 输出高频信号
title('经高频调制信号');
% 加入噪声后
% 产生噪声
signaladd=AWGN(signal_out,0); %加入信噪比为5db的噪声
figure(2);
plot(signal_out);xlim([0,200]);
title('发端的高频信号');
plot(signaladd,'red');xlim([0,200]);
title('加入0dB噪声后接收端接收到的信号');
%BPSK解调
signal_demod=zeros(1,sig_len);
for i=1:sig_len
signal_demod(i)=signaladd(i)*cos(W*i);
end
%通过低通滤波器
N=150;
F=[0,0.2,0.2,1];
A=[1,1,0,0];
LF_Coefficient=firls(N,F,A);
LF_signal_demod=conv(LF_Coefficient,signal_demod);
LF_signal_demod=LF_signal_demod(75+1:sig_len+75);
%输出抽样判决
a_out=zeros(1,sig_len/nn);
for i=1:sig_len/nn
a_out(i)=LF_signal_demod((i-1)*nn+nn/2+1);
end
figure(3);
subplot(2,1,1);plot(sig_part);xlim([0 200]);
hold on;
plot(signal,'red');xlim([0 200]); % 调制信号
title('发端BPSK调制信号');
subplot(2,1,2);plot(LF_signal_demod); xlim([0 200]);
hold on;
plot(signal,'green');xlim([0 200]);
title('接收端解调出的BPSK信号');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -