首页/文章/ 详情

通信原理与matlab仿真v3 第四章 BPSK调制解调器(16)均衡器的实际使用

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/博士学历/特邀专家/独家讲师
平台推荐
内容稀缺
15小时前浏览6
继续讲解!如何在通信系统中使用均衡器呢?看看该如何仿真?本文含有大量的通信仿真代码,非专业人士请不要付费阅读。2024年开始,这个经典系列的发文速度是每年一篇。2025年春节,第四章的第十六篇文章终于和大家见面了,历时八个多月打造完成!!!本文接近七千字,非专业人士莫入!文章涉及多种算法的仿真程序,没有看过本系列之前的文章,可能存在阅读困难!
这里先补充给出函数内容,之前文章中有疏漏,感谢清华大学正在读博士后的小刘同学的提醒!和粉丝互动获益匪浅!
程序中的hrollcoef和oversamp是自编函数!这里给出函数内容!
%%%%%%  %%%%%%    函数名   %%%%%%  %%%%%% 
function [xh] = hrollfcoef(irfn,ipoint,sr,alfs,ncc)
%%%%     程序说明 
% Generate coefficients of Nyquist filter
%%%%%%  %%%%%%  变量名定义  %%%%%%  %%%%%% 
% irfn : Number of symbols to use filtering
% ipoint : Number of samples in one symbol
% sr     : symbol rate
% alfs   : rolloff coeficiense
% ncc    : 1 -- transmitting filter  0 -- receiving filter
%************************************************ 
%%************          函数主体        *************%%
xi=zeros(1,irfn*ipoint+1);
xq=zeros(1,irfn*ipoint+1);
point = ipoint;
tr = sr ;  
tstp = 1.0 ./ tr ./ ipoint;
n = ipoint .* irfn;
mid = ( n ./ 2 ) + 1;
sub1 = 4.0 .* alfs .* tr;   % 4*alpha*R_s
for i = 1 : n 
  icon = i - mid;
  ym = icon;
  if icon == 0.0 
    xt = (1.0-alfs+4.0.*alfs./pi).* tr;  % h(0) 
  else 
    sub2 =16.0.*alfs.*alfs.*ym.*ym./ipoint./ipoint; 
    if sub2 ~= 1.0 
      x1=sin(pi*(1.0-alfs)/ipoint*ym)./pi./(1.0-sub2)./ym./tstp;
      x2=cos(pi*(1.0+alfs)/ipoint*ym)./pi.*sub1./(1.0-sub2);
      xt = x1 + x2;  % h(t) plot((1:length(xh)),xh)
    else % (4alphaRst)^2 = 1plot((1:length(xh)),xh)
      xt = alfs.*tr.*((1.0-2.0/pi).*cos(pi/4.0/alfs)+(1.0+2.0./pi).*sin(pi/4.0/alfs))./sqrt(2.0);
    end  %  if sub2 ~= 1.0 
  end %  if icon == 0.0 
  if ncc == 0                     % in the case of receiver
    xh( i ) = xt ./ ipoint ./ tr; % normalization
  elseif ncc == 1 % in the case of transmitter
    xh( i ) = xt ./ tr;          % normalization
  else
    error('ncc error');
  end    %  if ncc == 0
end  % for i = 1 : n 
%******************** end of file ***************************
看看下面的仿真任务吧!!!
看完这个课题后就知道实际中怎么使用的了!
仿真课题:构建一个离散的无线瑞利信道模型,产生一个 BPSK 调制信号,信源为 PN 序列和随机信号的组成, 通过 PN 序列和卷积来估计信道冲激响应。这个过程分为信道生成、训练序列生成、调制信号生成、输出信号计算、以及信道估计和均衡等步骤,最终实现信号解调。比较瑞利信道和高斯白噪声下误码性能的差异。
  • 信道响应生成:生成的信道响应为长度为L的有限冲激响应,且每个冲激响应的值服从瑞利分布。
  • 训练序列和信息序列生成:生成训练序列和信息序列,并对其进行BPSK调制,生成基带传输信号。
  • 调制信号生成:调制信号直接使用BPSK调制后的序列。
  • 输出信号计算:通过卷积计算信道对输入信号的作用,得到输出信号。
  • 信道估计:通过最小二乘法利用训练序列估计信道冲激响应,并与真实信道响应进行对比,计算估计误差。
  • 均衡输出:时域均衡和频域均衡两种方式。根据训练序列长度来定夺!
  • 判决。
在下面程序基础上进行改进!这个程序完成了信号的均衡。
提醒:本文只做符号间隔均衡器的仿真!信号源怎么没有训练序列啊?该如何改动啊?真正的通信系统中信号又是如何构成的呢?一步一步来解惑!
利用训练序列进行信道估计和上一篇文章提到的采用LMS算法进行信道估计的差异主要体现在以下几个方面:
  • 基本原理

训练序列:发送端在发送数据前先发送一段已知的训练序列,接收端根据接收到的训练序列和已知的发送训练序列,通过特定的算法估计出信道的特性。
LMS算法:基于自适应滤波的原理,根据接收信号和期望信号之间的误差,不断调整滤波器的系数,以使得滤波器的输出尽可能接近期望信号,从而估计出信道特性。
  • 对先验知识的需求

训练序列:需要发送端发送已知的训练序列,接收端必须事先知道训练序列的具体内容,以此作为参考进行信道估计。
LMS算法:不需要事先知道信道的任何先验信息,完全根据接收信号和不断调整的滤波器系数来逐步估计信道特性。
  • 计算精度和收敛速度

训练序列:在训练序列长度足够且信道在训练期间保持相对稳定的情况下,能够获得较为准确的信道估计结果,但受训练序列长度和信道时变特性影响较大。
LMS算法:收敛速度相对较慢,需要一定的时间和数据量来使滤波器系数收敛到最优值,但在时变信道环境中能够持续跟踪信道的变化,具有较好的适应性,估计精度会随着迭代次数的增加而逐步提高。
  • 计算复杂度

训练序列:计算复杂度相对较低,主要涉及到接收训练序列与已知训练序列的简单相关运算或其他基于训练序列的特定算法。
LMS算法:每次迭代都需要进行乘法、加法等运算来更新滤波器系数,计算复杂度相对较高,尤其是在滤波器阶数较高或数据速率较快的情况下。
先看看加入训练序列后的仿真代码!先把信号源按照训练序列和信息序列两部分组成!然后先看时域均衡的仿真代码该怎么写?这是在之前sim1程序上的改进,加入了PN序列!
m_seq1 = generate_m_sequence(poly_1, initial_state1, train_Length);
trainSequence = 2*m_seq1 - 1;
% 生成数据符号
dataSymbols = sign(randn(1, num_Symbols));
% 合成发送信号:训练序列 + 数据符号
txSymbols = [trainSequence dataSymbols];


来源:通信工程师专辑
MATLAB通信UMLMS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-08
最近编辑:15小时前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 405粉丝 2623文章 381课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈