Matlab-奈奎斯特滤波器实现《一》

    所谓算法,其核心思想也是理论思想,剩下的编程就当然不在话下。技术在于积累,编程就是一门技术吧。刚开始的时候,有很多编程地方不会处理,积累多了自然也就会得多了。不管是什么编程语言,亦或理论思想。最大的避讳就是不求甚解,而且不求甚解给自己带来的弊端将是长久的。我就是深受毒害,所以每当遇到问题都时刻提醒自己,不要以为结果实现了就可以不去理会它,要去求甚解。废话好像多了点,还是直接进入正题吧。从上面一篇文章“Matlab无线通信仿真之奈奎斯特准则”,讲解了无码间干扰的基本准则,但在通信系统传输过程中常用的是根升余弦滤波器,具体内容参考《通信原理》(北邮版)。

根升余弦滚降滤波器的冲击响应表达式为:


从上面的表达式可以看出,存在着极限点,关于其极限值的推导比较简单,运用洛必达法则,即可以得到。所以,在matlab编程时候要将极限值提出来单独计算。


上图就是得到的根升余弦滤波器时域冲击响应图。其中横坐标为:t/Ts,Ts定义的传输符号周期。

编程核心:时域响应中的 t = ym * tstp ;其中tstp为时间隔,也可以理解为最小分辨率。ym 为和中点0时刻点相距的点数。带入h(t)中,就可以得到离散的冲击响应。

%*************************************************** 
% hrollfcoef.m
% 功能:产生奈奎斯特滤波器的系数
% Author:dfj
% Date:2017-04-2
% Email:jlm.guan@163.com
%***************************************************

function [xh] = hrollfcoef2(irfn,ipoint,sr,alfs)

%****************** 输入变量 *************************
% irfn	 : 滤波器阶数
% ipoint : 每个符号的插值点数
% sr     : 符号速率  1/Ts
% alfs   : 滚降系数α
% *****************************************************
tr = sr ;  
tstp = 1.0 ./ tr ./ ipoint;  %时间分辨率,最小的时间单元
n = ipoint .* irfn;   %总共采样点数
mid = ( n ./ 2 ) + 1; %采样中间点
sub1 = 4.0 .* alfs .* tr;		% 4*alpha*R_s  4α/Tb

for i = 1 : n 

  icon = i - mid;
  ym = icon;    %公式 t= tstp*ym;

  if abs(icon )< eps  %eps为matlab自带精度2.2204e-016
    xt = (1.0-alfs+4.0.*alfs./pi).* tr;  % h(0) 
  else 
    sub2 =16.0.*alfs.*alfs.*ym.*ym./ipoint./ipoint;  % tr <= ipoint
    if abs(sub2-1)>eps
      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)
    else
     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 
  
  xh(i) = xt./tr;

end  % for i = 1 : n 

%******************** end of file ***************************

  • 0
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值