📄 bpskmdm.m
字号:
clear;
close all;
Fb=1;%码元速率
Tb=1/Fb;
I_shaping=16;%码元成型滤波时的上采样倍数
Fs_shaping=I_shaping*Fb;%码元成型滤波时的采样率
Ts_shaping=1/Fs_shaping;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%平方根升余弦滤波器冲击响应h_rrc
alpha=0.5;
h_rrc=rcosine(Fb,Fs_shaping,'fir/sqrt',alpha,4);%取8个Tb长度
h_rrc=h_rrc(I_shaping/2+1:end-I_shaping/2);%截取中间7个Tb
h_rrc=h_rrc/sum(h_rrc);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%待发送码元
transmit_data=[0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,1,0,1,1];
N=length(transmit_data);%数据长度
%转换成双极性码(double polar)
for i=1:N;
if transmit_data(i)==0;
transmit_data(i)=-1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_I=transmit_data;%I路码元
data_Q=zeros(1,N); %Q路码元
%上采样I_shaping倍
data_I_upsampled=upsample(data_I,I_shaping);
data_Q_upsampled=upsample(data_Q,I_shaping);
%产生I、Q两路基带信号
%经过根升余弦滤波器
Baseband_I=convn(data_I_upsampled,h_rrc);
Baseband_I=Baseband_I/max(Baseband_I);
Baseband_Q=convn(data_Q_upsampled,h_rrc);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%图
figure;
subplot(211);
plot(Baseband_I);
title('I路基带信号');
subplot(212);
plot(Baseband_Q);
title('Q路基带信号');
%载波调制
Fc=1*Fb;%载波频率
Q=16;%一个周期余弦波的采样点个数
Fs_modulate=Q*Fc;%调制时的采样率
Ts_modulate=1/Fs_modulate;
I_modulate=Fs_modulate/Fs_shaping;%调制时的上采样倍数
%将I、Q两路基带信号上采样至调制载波的采样率
Baseband_I_upsampled=upsample(Baseband_I,I_modulate);
Baseband_Q_upsampled=upsample(Baseband_Q,I_modulate);
%内插滤波器
Baseband_I_upsampled_low=Baseband_I_upsampled;
Baseband_Q_upsampled_low=Baseband_Q_upsampled;
% h_low=fir1(50,0.01,'low');%低通滤波器
% Baseband_I_upsampled_low=convn(Baseband_I_upsampled,h_low,'same');
% Baseband_Q_upsampled_low=convn(Baseband_Q_upsampled,h_low,'same');
%
% %图
% figure;
% subplot(211);
% plot(Baseband_I_upsampled_low);
% title('I路内插滤波后');
% subplot(212);
% plot(Baseband_Q_upsampled_low);
% title('Q路内插滤波后');
%正交调制
n=0:length(Baseband_I_upsampled_low)-1;
u=Baseband_I_upsampled_low.*cos(2*pi*Fc*n*Ts_modulate);
v=Baseband_Q_upsampled_low.*sin(2*pi*Fc*n*Ts_modulate);
S=u-v;%正交调制,此处为减
%图
figure;
plot(S);
title('已调信号');
%接收端
h_low=fir1(19,0.01,'low');%低通滤波器
%正交下变频
n=0:length(S)-1;
product_I=S.*cos(2*pi*Fc*n*Ts_modulate);
product_Q=S.*(-sin(2*pi*Fc*n*Ts_modulate));
%低通
X_I=convn(product_I,h_low,'same');
X_Q=convn(product_Q,h_low,'same');
figure;
subplot(211);
plot(X_I);
subplot(212);
plot(X_Q);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%解调算法
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -