function [y,signal] = bpsk_function(data_length,fs,fc,EbN0,interpolation_rate,Sample_position)
%qpsk 调制系统
%y误码率
%signal 发送信号
%data_length 数据长度
%fs 数据频率
%fc 载波频率
%interpolation_rate 内插系数
%Sample_position 采样点
w_carrier = fc/fs;
SNR = EbN0 +10*log10(4/interpolation_rate);
data_send = randi([0,1],data_length,1); %0/1序列
data_bio = 1-2*data_send; %对极序列
%观察基带信号
figure(1)
subplot(4,1,1)
stem(data_bio(1:64),'filled');%绘制01序列图
title('初始生成BPSK序列')
data_upsample = upsample(data_bio,interpolation_rate); %内插
alpha = 0.35;
span = 6;
hrc= rcosdesign(alpha,span,interpolation_rate,'sqrt'); %根升余弦滤波器
hrc2= ones(1,interpolation_rate); %方形滤波器
baseband = conv(data_upsample,hrc)'; %成型
subplot(4,1,2)
plot(baseband(1:64*4));
title('余弦脉冲成型后的')
% baseband = conv(data_upsample,hrc2)'; %成型
% k=length(baseband);
% k1=k-96;
% signal=zeros(1,k1);
% for i=1:k1
% signal(i)=baseband(i);
% end
carrier = cos(2*pi*w_carrier*[0:length(baseband)-1]); %载波
send_bpsk = baseband.*carrier; %BPSK调制
subplot(4,1,4)
plot(send_bpsk(1:64*4));
title('上变频后的信号')
recv = awgn(send_bpsk,SNR,'measured'); %加性高斯白
%接收
recv_carrier = carrier.*recv; %乘以本地载波
recv_bio = conv(recv_carrier,hrc); %匹配滤波器
figure(2);
subplot(2,1,1)
plot(recv_carrier(1:64*4));
title('下变频后的信号')
subplot(2,1,2)
plot(recv_bio(1:64*4));
title('匹配滤波后的信号')
recv_bio = recv_bio(length(hrc):end-length(hrc)+1);%补偿延时
recv_data = downsample(recv_bio,interpolation_rate,Sample_position); %下采样
plot(recv_bio(1:32*4));
hold on
demod_data = zeros(data_length,1);
for i= 1:length(recv_data)%判决
if recv_data(i)>0
demod_data(i) = 0;
else
demod_data(i) = 1;
end
end
error_num = sum(demod_data~=data_send);
BER = error_num/data_length;
y=BER;
signal = send_bpsk;
bpsk 通信调制系统matlab仿真函数
最新推荐文章于 2024-09-14 16:49:09 发布