📄 bpsk_li2.m
字号:
clear all
Rb=2400; %码元速率
fc=4800; %载波频率
fs=4*fc; %采样频率
T=5; %持续时间
s=randsrc(1,Rb*T,[1,-1]); %信源
%差分变换
%ds=s;
%ds(1)=1;
%for i=2:length(s)
% if s(i)=s(i-1)
% ds(i)=1;
% else ds(i)=-1;
% end
%end
%*************载波调制**********************************
for k=1:length(s)
st((k-1)*fs/Rb+1:k*fs/Rb)=s(k)*ones(1,fs/Rb);
end
t=[pi/2:pi/2:4*pi*length(s)];
cos=cos(t);
s_out=st.*cos;
%频域信号
%w=-pi:(2*pi/(length(st)-1)):pi;
%sf=fftshift(abs(fft(s_out)));
%figure(1);
%subplot(2,1,1);stem(s);ylim([-1.5,1.5]);
%title('信源信号');
%subplot(2,1,2);plot(s_out);ylim([-1.5,1.5]);
%title('BPSK调制信号');
%figure(2);
%plot(w/pi,sf);title('BPSK信号的频谱');
%*************加噪**************************************
for jj=1:41
snr=10-jj;
sadd=AWGN(s_out,snr);
%****************过带通滤波器*****************************
f=[0.3 0.4 0.7 0.8];
m=[0 1 0];
dev=[0.01 0.01 0.01];
[N,fo,mo,w]=remezord(f,m,dev);
%预测出达到要求的最小的阶数N,归一化频带边界fo,幅度矢量m,加权矢量w
b=remez(N,fo,mo,w); %滤波器序列
sk=conv(sadd,b);
sg=sk(20:20+length(s_out)-1);
%******************解调*************************
sgg=sg.*cos;
%**********低通滤波器*************************
f=[0.4 0.5];
m=[1 0];
dev=[0.01 0.01];
[N,fo,mo,w]=remezord(f,m,dev);
%预测出达到要求的最小的阶数N,归一化频带边界fo,幅度矢量m,加权矢量w
b=remez(N,fo,mo,w); %滤波器序列
s_sg=conv(sgg,b);
s_sgt=s_sg(20:20+length(s_out)-1);
%figure(3);
%subplot(2,1,1);stem(s);title('发端源信号')
%subplot(2,1,2);plot(s_sgt);title('用于判断的判决信号');
%判决
for i=1:length(s)
if s_sgt(i*8-1)>0
s_get(i)=1;
else s_get(i)=-1;
end
end
%***************计算误码******************
sum=0;
for i=1:length(s_get)
if s_get(i)==s(i)
sum=sum;
else
sum=sum+1;
end
end
Pe(jj)=sum/length(s);
SNR(jj)=snr;
disp(jj);
end
figure(4);plot(SNR,Pe);title('BPSK误码率与信噪比的关系');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -