一直很想深入学习滤波器方面的知识,图书馆也去借了书然后准备看,结果就是:然后就没有然后了。DSP一直是自己的短板,因为这里面感觉小的技巧好多,而且都需要自己去琢磨,像滤波器这种东西,我脑海里也只有少的可怜点印象。比如什么FIR 和 IIR 之类的。理论尚且薄弱更不谈实践了,这也是制约自己进一步提高的重要方面。但是,现在的自己仿佛早已经没了以前那么耐心去啃书了,最多上网googling,再看点博文。所以,前今天看到导师改的msn签名:静心!觉得很有启发,确实啊现在这个急功近利的社会,要做到的确有难度。说到这,又不得不再次表达对杨鸿文老师的敬佩,我觉得他应该是真正做到了那点,现在是很难再找到这样热爱自己工作的老师了,除了敬佩只剩瞻仰!

貌似每次写正文前,我都要唠叨几句。哎,唠叨唠叨也就过去了,人一辈子也不就这样嘛。好了,言归正传,今天谈谈最常见的滤波器—-升余弦滤波器。先说说我们为什么这么喜欢这个滤波器,最主要的原因就是它的拖尾衰减的比Nyquist滤波器(sinc())快,这样的好处就是当我们出现了定时误差的时候,码间干扰尽可能降低了。另一方面,既然衰减快了,说明它的频率成分肯定是增加了,这就导致带宽的增加。所以,它是以带宽换取低ISI的典型应用。接下来给出升余弦滤波器时域和频域表达式:

接下来我们就实践下,我们从时域来产生滤波器,再验证频域图像是否正确。

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % Author : ZXY
  3. % Email : zxy_ee@163.com
  4. % Version : 1.0
  5. % Date : 2012-2-16
  6. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  7. 看代码,直接点左上角view plain!
  8. clear all
  9. fs = 20;
  10. %we define T = 1,so we ignore it!!
  11. % defining the sinc filter
  12. sincNum = sin(pi*[-fs:1/fs:fs]); % numerator of the sinc function
  13. sincDen = (pi*[-fs:1/fs:fs]); % denominator of the sinc function
  14. sincDenZero = find(abs(sincDen) < eps);%the eps is 2.2204e-016
  15. sincOp = sincNum./sincDen;
  16. sincOp(sincDenZero) = 1; % sin(pix/(pix) =1 for x =0 诺比达法则
  17. alpha = 0;
  18. cosNum = cos(alpha*pi*[-fs:1/fs:fs]);
  19. cosDen = (1-(2*alpha*[-fs:1/fs:fs]).^2);
  20. cosDenZero = find(abs(cosDen)<eps);
  21. cosOp = cosNum./cosDen;
  22. cosOp(cosDenZero) = pi/4;
  23. gt_alpha0 = sincOp.*cosOp;
  24. N = length(gt_alpha0);
  25. GF_alpha0 = fft(gt_alpha0,N);
  26. alpha = 0.5;
  27. cosNum = cos(alpha*pi*[-fs:1/fs:fs]);
  28. cosDen = (1-(2*alpha*[-fs:1/fs:fs]).^2);
  29. cosDenZero = find(abs(cosDen)<eps);
  30. cosOp = cosNum./cosDen;
  31. cosOp(cosDenZero) = pi/4;%诺比达法则直接计算
  32. gt_alpha5 = sincOp.*cosOp;
  33. N = length(gt_alpha5);
  34. GF_alpha5 = fft(gt_alpha5,N);
  35. alpha = 1;
  36. cosNum = cos(alpha*pi*[-fs:1/fs:fs]);
  37. cosDen = (1-(2*alpha*[-fs:1/fs:fs]).^2);
  38. cosDenZero = find(abs(cosDen)<eps);
  39. cosOp = cosNum./cosDen;
  40. cosOp(cosDenZero) = pi/4;
  41. gt_alpha1 = sincOp.*cosOp;
  42. N = length(gt_alpha5);
  43. GF_alpha1 = fft(gt_alpha1,N);
  44. close all
  45. figure
  46. plot([-fs:1/fs:fs],[gt_alpha0],'r','LineWidth',2)
  47. hold on
  48. plot([-fs:1/fs:fs],[gt_alpha5],'g','LineWidth',2)
  49. plot([-fs:1/fs:fs],[gt_alpha1],'b','LineWidth',2)
  50. legend('alpha=0','alpha=0.5','alpha=1');
  51. grid on
  52. xlabel('时间, t')
  53. ylabel('幅度, g(t)')
  54. title('时域图像')
  55. figure
  56. %除以fs的原因是因为采样导致幅度加权了。
  57. plot([-N/2:N/2-1]/N*fs, abs(fftshift(GF_alpha0))/fs,'r','LineWidth',2);
  58. hold on
  59. plot([-N/2:N/2-1]/N*fs, abs(fftshift(GF_alpha5))/fs,'g','LineWidth',2);
  60. plot([-N/2:N/2-1]/N*fs, abs(fftshift(GF_alpha1))/fs,'b','LineWidth',2);
  61. legend('alpha=0','alpha=0.5','alpha=1');
  62. axis([-2 2 0 1.2])
  63. grid on
  64. xlabel('频率, f')
  65. ylabel('幅值, |G(f)|')
  66. title('频域图像')

对于其中频域计算在前面一篇文章中有说明,利用FFT 及 IFFT实现傅立叶正反变换。

结果如图所示:

好了,我们可以看出与理论分析是一致的,由于我们用的是很粗暴的矩形窗,所以你能明显看见吉布斯现象。同样,当拖尾衰减更快时,它的频域也无情地展开了。这个仿真的难点还是写出它的时域表达式,其他的都还好说。原来仿真很少加窗,现在可以用上自己的升余弦了,不再去用自带的函数,参数不好记啊那些。关键是对原理更清楚了。比如:我们数据发送出去之前,要成形滤波,这样来抵抗ISI,那么我们就用数据与这里的滤波器(准确说是带根号,整体效果还是一个升余弦)做卷积运算。注意的是,这里的数据也要相应的过采样,关于采样,等自己弄明白来说,好多东西自己还没理解那么透彻。完!

本文转载自:https://blog.csdn.net/mike190267481/article/details/7264827

升余弦滤波器的作用和产生相关推荐

  1. 根升余弦滤波器的作用

    根升余弦滤波的作用 数字基带调制后,必须经过脉冲成型,才能调制到载频进行发射. 因为理想的矩形脉冲(理想的无ISI)不可能实现,所以用升余弦函数脉冲替代,保证采样时刻无ISI影响. 通常在收发两端各用 ...

  2. 升余弦滤波器与根升余弦滤波器

    1 升余弦滚降滤波器有啥用? 1, 升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通,2. 升余弦 ...

  3. 升余弦滤波器MATLAB分析

    作用 升余弦滤波器常常作为发送端的成型滤波器,用来抑制信号带外辐射. MATLAB实现 在maltab中,主要用rcosdesign函数来实现FIR脉冲成型滤波器,其他相关的函数还有comm.Rais ...

  4. 升余弦和根升余弦滤波器(SRRC,RRC)的单位脉冲响应

    本博客详细讲述了升余弦和根升余弦滤波器的频域和时域表达式,最后给出了单位脉冲响应的Python 实现. 升余弦滤波器 升余弦滤波器(Raised-cosine filter)是一种经常作脉冲成型滤波器 ...

  5. matlab中升余弦滤波器产生函数rcosdesign

    直接来描述一下: b = rcosdesign(beta,span,sps,shape) beta: 滚降系数,取值0~1之间,决定频宽和陡峭程度.取值一般大于0.2. span: 表示截断的符号范围 ...

  6. 关于奈奎斯特准则和升余弦滤波器理解

    之前一直把采样定理和第一准则搞混在一起,这次仔细研究了一下. 首先是升余弦滤波器提出背景: 为了通过信道传输,信号必须是带限的,所以需要低通滤波. 为了满足无isi,滤波器需要满足一定的条件 那么,滤 ...

  7. matlab中升余弦滚降滤波器_升余弦滤波器 matlab代码

    关于信号波形成型:  中国通信网-无限分享-|M?9Y8]v!{"K(\ 升余弦滤波器    中国通信网-无限分享+C9R3qFUH8}HZ (1)  升余弦滤波器的 matlab函数 -- ...

  8. 平方根升余弦滚降滤波器matlab函数,平方根升余弦滚降数字滤波器的设计和实现.pdf...

    2005耳第g期 中图分类号:TN713文献标识码:A 文章编号:1009-2552(2005)09-0058-03 平方根升余弦滚降数字滤波器的设计与实现 文安平 (武汉科技大学信息科学与工程学院, ...

  9. 用matlab绘制升余弦函数

    在数字通信中涉及到滤波器这一块,常常会接触到升余弦函数的使用(滚降).以下这段程序展示了如何用matlab画出一个升余弦函数的图像.通过改变不同的升降系数能得到不同的滤波器特性. function g ...

最新文章

  1. 在Ubuntu 14.04 64bit上使用JBL Charge2+无线蓝牙音箱听歌指南
  2. 推荐8个私藏已久的实用网站,每一款都能带来惊喜!
  3. Spark-Scala算子
  4. Java自动装箱与拆箱及其陷阱
  5. mysql的纵向扩展方案_SQL Server横向扩展方案-SODA
  6. simpy练习案例(二):不直接控制流程,而是使用事件隐形控制流程 env.event()
  7. 抖音内测网页版 网友:摸鱼党新的快乐来了
  8. 在线手机号码VCF批量导入工具
  9. ASCII码常用范围
  10. 嵌入式系统硬件构成-基于ARM的嵌入式开发板介绍
  11. c#FileStream文件读写可能会出现乱码
  12. 计数器的代码的原理分析
  13. linux用mkefs不能进行格式化,磁盘格式化命令 mkfs
  14. matlab激光操纵控制系统设计,某激光操作控制系统的滞后校正
  15. Mac电脑快速切换用户教程
  16. 面向对象程序有哪些优点呢?
  17. 二(1-苯基-异喹啉)(乙酰丙酮)合铱(III)
  18. 架构师评价当前软件行业现状及发展前景
  19. 喵喵机和咕咕机哪个好,打印效果大评测!喵喵机p2 VS咕咕机GT1
  20. github上操作部署

热门文章

  1. 视频教程-多人网络聊天室-Unity3D
  2. php图像识别条形码,ThinkPHP用barcode制作条形码
  3. 【小程序】小程序组件-1
  4. ins营销是什么意思?
  5. 四轴飞行器建模及控制(一)
  6. .style与.style.cssText
  7. [GLSL]法线贴图(Normal mapping)原理及实现
  8. 【docker安装jd代挂(宝塔+青龙面板+qqbot + Nvjdc)】
  9. Flume实战-解决零点漂移-时间戳拦截器
  10. 现在进行时的被动语态