许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MPSK传输系统MATLAB仿真代码分享

MPSK传输系统MATLAB仿真代码分享

阅读数 3
点赞 0
article_banner


最近在用Matlab实现之前学过的通信相关的内容,今天就从MPSK收发机开始吧。

基本原理:

MPSK(多相移键控)收发机的过程可以分为发送端和接收端两个部分。

发送端过程

  1. 数据源 - 生成原始数据比特流。
  2. 映射器(调制器) - 将数据比特转换成MPSK符号。例如,对于4-PSK(QPSK),每2个比特映射到一个星座点上。
  3. 脉冲成形滤波器 - 对信号进行脉冲成形,减少带宽占用并降低ISI(符号间干扰)。
  4. 上变频 - 将基带信号转换到载波频率。
  5. 信道传输 - 经过信道传输,信号可能受到噪声和衰落的影响。

接收端过程

  1. 下变频 - 将接收到的高频信号转换回基带信号。
  2. 匹配滤波器 - 进行匹配滤波,以提高信噪比。
  3. 采样与判决 - 在正确的时刻对信号进行采样,并根据星座图判断出最接近的符号。
  4. 解调器(解映射器) - 将MPSK符号转换回比特流。
  5. 误码率分析 - 比较发送的数据和接收到的数据,计算误码率(BER)。

Matlab代码

%%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  


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空