MPSK(多相移键控)收发机的过程可以分为发送端和接收端两个部分。
发送端过程
接收端过程
%%MPSK收发机
clc;
clear all;
close all;
%%基本参数设定
data_length=1e6; %码长
Rs=1e3; %码率
osr=10; %过采样率
L=data_length*osr; %过采样后长度
fs=Rs*osr; %数字采样率
morder =4; %数据调制阶数:2→BPSK 4→QPSK 8→8PSK
dt=1/fs; %采样点间隔
alpha=0.4; %滚降因子
span=8; %滤波器跨度
sps=osr; %每符号的样本数
hn=rcosdesign(alpha, span, osr,'sqrt');%根升余弦滤波器,用于成型滤波和匹配滤波
%%传输过程中的残余频偏和相偏
del_f=0; %残余频偏为0
del_phi=(pi*rand-pi/2)/5; %相偏为-pi/10到pi/10的随机数
for SNR=-5:1:10 %遍历所有误码率
%%基带调制
data_r = randi([0 morder-1],[1,data_length]); %信源
data = exp(1j*2*pi/morder*data_r); %数据映射到星座图上
data_oversample=upsample(data,osr,0); %上采样
data_baseband=conv(data_oversample,hn,'same');%成型滤波
%%带通调制
fc=4000; %载波频率
N=length(data_baseband); %总码元数
t=dt:dt:N*dt; %第n个码元
carrier=exp(1j*2*pi*(fc+del_f)*t)*exp(1j*del_phi); %载波
data_modulated=data_baseband.*carrier; %上变频
%%信号传输过程
data_noise=awgn(data_modulated,SNR,'measured'); %添加高斯白噪声
%%信号接收与解调
d_carrier=exp(-1j*2*pi*fc*t); %解调载波
data_demodulated=data_noise.*d_carrier; %信号解调
%%匹配滤波与下采样
data_received=conv(data_demodulated,hn,'same'); %匹配滤波
data_downsample=downsample(data_received,osr,0); %下采样
%%抽样判决
phases=angle(data_downsample); %星座图辐角
data_decision = round(phases / (2 * pi / morder));%判决
data_decision = mod(data_decision, morder); %判决
%%误符号率判断
SER(SNR+6) = sum(abs(data_r-data_decision))/length(data_r);
end
%%绘制误码率曲线
switch morder
case 2
semilogy(-5:1:10,SER);
hold on;
xlim([-5,10]);
xlabel('SNR');
ylabel('误符号率');
case 4
semilogy(-5:1:10,SER );
hold on;
xlim([-5,10]);
xlabel('SNR');
ylabel('误符号率');
case 8
semilogy(-5:1:10,SER);
xlim([-5,10]);
xlabel('SNR');
ylabel('误符号率');
otherwise
semilogy(-5:1:10,SER);
xlim([-5,10]);
xlabel('SNR');
ylabel('误符号率');
end
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删