Matlab通信仿真系列——正交、双极性、单极性信号在awgn信道下的传输仿真

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、数字基带传输
1、数字基带信号
2、数字基带传输系统
3、二进制基带信号传输
4、二进制基带信号的最佳接收
二、正交、双极性、单极性信号在awgn信道下的传输特性
1、正交信号在awgn信道下的传输特性
2、双极性信号在awgn信道下的传输特性
3、单极性信号在awgn信道下的传输特性
4、正交、双极性、单极性信号在awgn信道下的Matlab仿真
三、Matlab源码

本节内容
一、数字基带传输
1、数字基带信号

数字基带信号——来自数据终端的原始数据信号往往包含丰富的低频分量,甚至直流分量,称之为数字基带信号。
数字基带传输——在某些具有低通特性的有效信道中,特别是传输距离不太远的情况下,数字基带信号可以直接传输,称为数字基带传输。
在这里插入图片描述

2、数字基带传输系统
数字基带传输系统,主要由信道信号形成器、信道、接收滤波器、抽样判决器,以及同步系统组成。
①信道信号形成器
基带传输系统的输入是由终端设备或编码器产生的脉冲序列,不适合直接发送到信道中传输。信道信号形成器的作用是把原始基带信号变换成适合于信道传输的基带信号,主要通过码型变换和波形变换来实现,目的是与信道匹配,便于传输,减小码间串扰,利于同步提取和抽样判决。
②信道
信道是允许基带信号通过的媒质,通常为有线信道。信道的传输特性通常是随机变化的,不满足无失真传输条件。而且还会进入噪声。通信系统中,通常把噪声n(t)等效集中在信道中引入。
③接收滤波器
主要是滤除带外噪声,对信道特性均衡,使输出的基带波形有利于抽样判决。
④抽样判决器
在传输特性不理想及噪声条件下,在规定时刻,通常是位定时脉冲控制,对接收滤波器的输出波形进行抽样判决,以恢复或再生基带信号。用来抽样的位定时脉冲依靠同步提取电路从接收信号中提取,位定时的准确与否直接影响判决效果。
3、二进制基带信号传输
在二进制基带通信系统中,由0和1的序列组成的二进制数据分别用s0(t)和s1(t)来传输。
信息速率为R(bit/s),每个比特的信号波形为
在这里插入图片描述

其中Tb=1/R,为比特时间区间,或码元持续时间。
传输信号通过加性高斯白噪声信道awgn,叠加了噪声n(t),n(t)是功率谱密度为(N0/2)的白色高斯随机过程的一个样本函数。
接收端的信号为r(t)=si(t)+n(t),其中i=0,1;0≤t≤Tb。
接收端在接收端信号r(t)后,判断在区间0≤t≤Tb内发送的是0还是1。最佳接收机是指差错概率最小的接收机。
4、二进制基带信号的最佳接收
对于awgn信道的最佳接收机,接收滤波器应该是信号相关器或匹配滤波器。也就是说在采样瞬间t=Tb时刻输出是一致的。在t=Tb时刻对这两个输出采样,并输出至判决器,最后输出数据。
在这里插入图片描述

信号相关器将接收到的信号r(t)与两个可能的发送信号s0(t)和s1(t)做互相关。计算在区间0≤t≤Tb内的两个输出:
在这里插入图片描述

上式中n0和n1为信号相关器输出端的噪声分量;
Eb为脉冲信号s0(t)的能量。
在这里插入图片描述

二、正交、双极性、单极性信号在awgn信道下的传输特性
1、正交信号在awgn信道下的传输特性
在这里插入图片描述
在这里插入图片描述

上述红圈中需要进行换算,awgn的第二个参数是信噪比SNR,提供的是Eb/N0,根据公式:
在这里插入图片描述

Rb为每秒传输的比特数,B取决于取样频率。
2、双极性信号在awgn信道下的传输特性
在这里插入图片描述

3、单极性信号在awgn信道下的传输特性
在这里插入图片描述

4、正交、双极性、单极性信号在awgn信道下的Matlab仿真

matlab代码示例:
仿真正交、双极性、单极性信号通过awgn信道后的误比特率性能。
每个信号周期采样10次,接收端采用相关器,
绘制误比特率随Eb/N0的变化情况,
Eb/N0的范围为0-10dB,将理论值与Matlab仿真值比较。

在这里插入图片描述
在这里插入图片描述

三、Matlab源码

clear all;
clc;
%采样点数
numsamp=10;
%基带脉冲信号
quadrature_s0=ones(1,numsamp);
quadrature_s1=[ones(1,numsamp/2) -ones(1,numsamp/2)];
bipolar_s0=ones(1,numsamp);
bipolar_s1=-bipolar_s0;
uipolar_s0=zeros(1,numsamp);
uipolar_s1=ones(1,numsamp);
%发送符合数
num_symbol=100000;
%信噪比
EbN0=0:10;
%消息比特
quadrature_msg=randi([0,1],1,num_symbol);
quadrature_s00=zeros(num_symbol,1);
quadrature_s11=zeros(num_symbol,1);
bipolar_msg=randi([0,1],1,num_symbol);
bipolar_s00=zeros(num_symbol,1);
bipolar_s11=zeros(num_symbol,1);
uipolar_msg=randi([0,1],1,num_symbol);
uipolar_s00=zeros(num_symbol,1);
uipolar_s11=zeros(num_symbol,1);
%比特0在发送消息中的位置
quadrature_indx0=find(quadrature_msg==0);
bipolar_indx0=find(bipolar_msg==0);
uipolar_indx0=find(uipolar_msg==0);
%比特0映射为发送波形
quadrature_s00(quadrature_indx0)=1;
quadrature_s00=quadrature_s00*quadrature_s0;
bipolar_s00(bipolar_indx0)=1;
bipolar_s00=bipolar_s00*bipolar_s0;
uipolar_s00(uipolar_indx0)=1;
uipolar_s00=uipolar_s00*uipolar_s0;
%比特0在发送消息中的位置
quadrature_indx1=find(quadrature_msg==1);
bipolar_indx1=find(bipolar_msg==1);
uipolar_indx1=find(uipolar_msg==1);
%比特0映射为发送波形
quadrature_s11(quadrature_indx1)=1;
quadrature_s11=quadrature_s11*quadrature_s1;
bipolar_s11(bipolar_indx1)=1;
bipolar_s11=bipolar_s11*bipolar_s1;
uipolar_s11(uipolar_indx1)=1;
uipolar_s11=uipolar_s11*uipolar_s1;
%总的发送波形,并进行数据转置,便于接收处理
quadrature_s=quadrature_s00+quadrature_s11;
quadrature_s=quadrature_s.';
bipolar_s=bipolar_s00+bipolar_s11;
bipolar_s=bipolar_s.';
uipolar_s=uipolar_s00+uipolar_s11;
uipolar_s=uipolar_s.';


for quadrature_indx0=1:length(EbN0)  
    %发送信号经过awgn信道
    quadrature_r=awgn(quadrature_s,EbN0(quadrature_indx0)-7);
    %与s0相关
    quadrature_r00=quadrature_s0*quadrature_r;
    %与s1相关
    quadrature_r11=quadrature_s1*quadrature_r;   
    %正交信号
    quadrature_decmsg0=zeros(1,num_symbol);
    %判决
    quadrature_indx1=find(quadrature_r11>=quadrature_r00);
    quadrature_decmsg0(quadrature_indx1)=1;    
    [err,quadrature_ber0(quadrature_indx0)]=biterr(quadrature_msg,quadrature_decmsg0);  
end



for bipolar_indx0=1:length(EbN0)  
    %发送信号经过awgn信道
    bipolar_r=awgn(bipolar_s,EbN0(bipolar_indx0)-7);
    %与s0相关
    bipolar_r00=bipolar_s0*bipolar_r;
    %双极性信号
    bipolar_decmsg0=zeros(1,num_symbol);
    %判决
    bipolar_indx1=find(bipolar_r00<0);
    bipolar_decmsg0(bipolar_indx1)=1;    
   [err,bipolar_ber0(bipolar_indx0)]=biterr(bipolar_msg,bipolar_decmsg0);
end


for uipolar_indx0=1:length(EbN0)  
    %发送信号经过awgn信道
    uipolar_r=awgn(uipolar_s,EbN0(uipolar_indx0)-7);
    %与s1相关
    uipolar_r11=uipolar_s1*uipolar_r;   
    %单极性信号
    uipolar_decmsg0=zeros(1,num_symbol);
    %判决
    uipolar_indx1=find(uipolar_r11>5);
    uipolar_decmsg0(uipolar_indx1)=1;    
   [err,uipolar_ber0(uipolar_indx0)]=biterr(uipolar_msg,uipolar_decmsg0);
end
semilogy(EbN0,quadrature_ber0,'-ko',EbN0,qfunc(sqrt(10.^(EbN0/10))),'b',EbN0,bipolar_ber0,'-ko',EbN0,qfunc(sqrt(2*10.^(EbN0/10))),'g',EbN0,uipolar_ber0,'-ko',EbN0,qfunc(sqrt(10.^(EbN0/10)/2)),'r');
title('二进制正交信号,双极性信号,单极性信号误比特率性能');
xlabel('EbN0');
ylabel('误比特率Pe');
legend('正交信号仿真结果','正交信号理论结果','双极性信号仿真结果','双极性信号仿真结果','单极性信号理论结果','单极性信号仿真结果');
  • 38
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是MATLAB的代码实现: ``` % 定义参数 N = 10^6; % 样本数 M = 2; % 码元数 SNR_dB = 0:2:20; % 信噪比,位:dB % 生成随机的二进制消息 msg = randi([0,1],1,N); % 将二进制消息转换成极性信号极性信号 unipol = 2*msg - 1; % 极性信号 bipol = (-1).^msg; % 极性信号 % 初始化误比特率数组 ber_unipol = zeros(1,length(SNR_dB)); ber_bipol = zeros(1,length(SNR_dB)); % 进行信道仿真并计算误比特率 for i = 1:length(SNR_dB) % 计算当前信噪比下的噪声方差 SNR = 10^(SNR_dB(i)/10); var = 1/(2*SNR); % 添加高斯白噪声 r_unipol = unipol + sqrt(var)*randn(1,N); % 极性信号 r_bipol = bipol + sqrt(var)*randn(1,N); % 极性信号 % 判决解调 dec_unipol = sign(r_unipol); % 极性信号 dec_bipol = sign(r_bipol); % 极性信号 % 计算误比特率 ber_unipol(i) = sum(dec_unipol ~= unipol)/N; % 极性信号 ber_bipol(i) = sum(dec_bipol ~= bipol)/N; % 极性信号 end % 计算理论误比特率 ber_unipol_theo = 0.5*erfc(sqrt(10.^(SNR_dB/10))); % 极性信号 ber_bipol_theo = ber_unipol_theo/2; % 极性信号 % 绘制误比特率曲线 semilogy(SNR_dB,ber_unipol,'o-',SNR_dB,ber_bipol,'o-',SNR_dB,ber_unipol_theo,'--',SNR_dB,ber_bipol_theo,'--'); axis([SNR_dB(1) SNR_dB(end) 10^-6 1]); grid on; legend('极性信号仿真','极性信号仿真','极性信号理论','极性信号理论'); xlabel('信噪比(dB)'); ylabel('误比特率'); ``` 运行以上代码,可以得到一个误比特率性能对比图,展示了极性信号极性信号正交信号的误比特率曲线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值