栅栏效应,频谱泄露,旁瓣效应_有限带宽 sinc 旁瓣-程序员宅基地

技术标签: 算法  fft  工作  

http://139791733.blog.163.com/blog/static/1786396420112715530734/
栅栏效应:


  对采样信号的频谱,为提高计算效率,通常采用FFT算法进行计算,设数据点数为
  N = T/dt = T.fs
  则计算得到的离散频率点为
  Xs(fi) , fi = i.fs/N , i = 0,1,2,…,N/2
  这就相当于透过栅栏观赏风景,只能看到频谱的一部分,而其它频率点看不见,因此很可能使一部分有用的频率成分被漏掉,此种现象被称为栅栏效应.
   不管是时域采样还是频域采样,都有相应的栅栏效应。只是当时域采样满足采样定理时,栅栏效应不会有什么影响。而频域采样的栅栏效应则影响很大,“挡住”或丢失的频率成分有可能是重要的或具有特征的成分,使信号处理失去意义。
减小栅栏效应可用提高采样间隔也就是频率分辨力的方法来解决。间隔小,频率分辨力高,被“挡住”或丢失的频率成分就会越少。但会增加采样点数,使计算工作量增加。解决此项矛盾可以采用如下方法:在满足采样定理的前提下,采用频率细化技术(ZOOM),亦可用把时域序列变换成频谱序列的方法。
    例如:505Hz正弦波信号的频谱分析来说明栅栏效应所造成的频谱计算误差。
设定采样频率fs=5120Hz,软件中默认的FFT计算点数为512,其离散频率点为
fi = i.fs/N = i.5120/512=10×i , i= 0,1,2,…,N/2
位于505Hz 位置的真实谱峰被挡住看不见,看见的只是它们在相邻频率500Hz或510Hz处能量泄漏的值。
若设 fs=2560Hz,则频率间隔df=5Hz,重复上述分析步骤,这时在505位置有谱线,我们就能得到它们的精确值。从时域看,这个条件相当于对信号进行整周期采样,实际中常用此方法来提高周期信号的频谱分析精度。
 
频谱泄露:截断信号时域上相当于是乘以了rectangular window,于是造成了频谱泄漏的问题。
在帖子上看到的解释:http://www.chinavib.com/forum/thread-51126-2-1.html
    泄漏的原因来自两方面第一输入频率不是fs/n的整数倍,因为dft只能输出在fs/n的频率点上的功率,所以当输入频率不在fs/n的整数倍时,在dft的输出上就没有与输入频率相对应得点(dft输出是离散的),那么输入频率就会泄漏到所有的输出点上,具体的泄漏分布取决于所采用的窗的连续域复利叶变换,对于没有使用窗的,相当于使用了矩形窗,矩形窗在进行连续傅立叶变换在一般的信号与系统书上都有。而对于非矩形窗,窗本身就会产生一定的泄漏,是通过加大主瓣的宽度来降低旁瓣的幅度,通常主瓣的宽度变成了矩形窗的两倍,例如当我们输入一个fs/n的整数倍的输入频率时,经过非矩形窗,dft输出会在两个fs/n的频点上有功率。
见参考书:lyon的understanding DSP.
 
旁瓣效应:
 
补零对频谱的影响:
进行zero padding只是增加了数据的长度,而不是原信号的长度。就好比本来信号是一个周期的余弦信号,如果又给它补了9个周期长度的0,那么信号并不是10个周期的余弦信号,而是一个周期的余弦加一串0,补的0并没有带来新的信息。其实zero padding等价于频域的sinc函数内插,而这个sinc函数的形状(主瓣宽度)是由补0前的信号长度决定的,补0的作用只是细化了这个sinc函数,并没有改变其主瓣宽度。而频率分辨率的含义是两个频率不同的信号在频率上可分,也就要求它们不能落到一个sinc函数的主瓣上。所以,如果待分析的两个信号频率接近,而时域长度又较短,那么在频域上它们就落在一个sinc主瓣内了,补再多的0也是无济于事的。 

泄露是由于非整周期采样引起的,因为FFT最精确的是将周期信号映射到一个正交函数空间上(傅立叶变换常用三角函数空间),对周期性信号,只要是整周期采样(采样周期是信号周期的整数倍数描述不对,应该说采样时间长是信号周期的整数倍),是没有谱泄露的,对于非周期信号,无法达到整周期采样,所以总会有泄露,选择合适的窗函数可以控制泄露的严重程度。 
    混叠是采样频率与信号最高频率的关系引起的,满足采样定理,即采样频率〉=2倍信号最高频率,即可避免混叠,实际信号都受噪声干扰,白噪声是宽带的,所以采样频率即便很高,都不可避免地存在混叠,只是混叠程度小些,满足工程应用。再者,采样频率不是越高越好,我另外的帖子谈过,采样点数有限的情况下,采样频率与频率分辨率是相互矛盾的。










版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/watchen/article/details/7610646

智能推荐

LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling_llvm编译器指令-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏9次。1、参考Instruction scheduling in LLVM - 知乎,在中后端均存在指令调度指令调度模型2、在llvm12->llvm14 中Machine Instruction Scheduler有个patch增强了load/store指令的合并,也就是指令调度不仅仅只是改变指令的顺序,该优化类似gcc中的store-merge优化....................................................................._llvm编译器指令

没想到你们是这种人!-程序员宅基地

文章浏览阅读4.1k次。大家好,我是北妈0.从我3月初决定开启朋友圈每天碎碎念以来,每天坚定不移的至少发一条,一段每天感悟和金句。作为总结,也把它当成一个日记给自己和好友,甚至是未来的孩子去回顾,如果有可能随着时...

zhaowei -学习猜拳游戏_机器学习 划拳游戏-程序员宅基地

文章浏览阅读218次。import random# 电脑出拳 电脑产生一个1-3的随机数computer = random.randint(1, 3) # 数字# print(computer)# print(computer)# 我们出拳our = int(input("请出拳(1石头 2 布 3剪刀):")) # 字符串# print(our)# 判断谁输谁赢 orif computer ..._机器学习 划拳游戏

2022年编程语言热度排行榜来啦,快来看看你学习的语言排第几_2022年编程语言排行榜-程序员宅基地

文章浏览阅读4.9k次。一直以来,编程语言都是程序员非常关注的话题。年末将至,是否会有程序员发出疑问——“2022 年行业需求最大的编程语言,花落谁家?”从 2021 年 10 月到 2022 年 11 月,DevJobsScanner 分析了超过 1200 万个开发人员职位。从这 1200 万份工作中,DevJobsScanner 挑选了明确需要编程语言的工作岗位。现在,一起回顾 2022 年行业需求最大的 8 种编程语言。_2022年编程语言排行榜

开发日志[1] 错误:未能找到引用的组件“System.Windows.Forms.DataVisualization”_system.windows.forms.datavisualization netframewor-程序员宅基地

文章浏览阅读696次。错误:未能找到引用的组件“System.Windows.Forms.DataVisualization”原因:代码中是MSChart表格插件未在当前系统中安装。解决:下载对应版本的MSChart.exe安装程序,安装后再次在项目中添加引用即可。相关:......_system.windows.forms.datavisualization netframework 3.5.1

一阶跃函数c语言程序设计教程课后答案,最新整理c语言上机操作题参考.doc-程序员宅基地

文章浏览阅读628次。最新整理c语言上机操作题参考实验一 上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的特点与基本结构。2、了解C语言程序的编译环境。3、掌握使用C语言编写和调试程序的流程:编辑-保存-编译-构建(组件)-执行。4、掌握C语言程序在Visual C++ 6.0环境下的调试过程。5、初步了解C程序的特点。三、实验内容:说明:前三题为必做题目,第四题为选做题目。1、编辑实验..._编写程序,通过输入x的值,计算阶跃函数y的值

随便推点

MacOS 系统成功安装 tensorflow 步骤_mac装tensorflow-程序员宅基地

文章浏览阅读1.3k次,点赞21次,收藏18次。tensorflow 2 mac os 系统安装 步骤_mac装tensorflow

ES(Elasticsearch)7.6.1安装教程_安装elasticsearch-程序员宅基地

文章浏览阅读5.8k次,点赞4次,收藏21次。ES 安装教程注意:除了最后启动ES的时候在es账户下执行,其他都是在root 下执行的。⼀、前期准备java 11 的安装,请大家自行安装。elasticsearch启动不能以root⽤户运⾏,所以创建es⽤户(root⽤户状态下操作)useradd espasswd es然后输入两次:zong2015如果需要删除用户userdel -r es将elasticsearch⽤户添加到sudoersvim /etc/sudoers..._安装elasticsearch

spring boot>>RabbitMQ中间件发送验证码_basevo依赖-程序员宅基地

文章浏览阅读2.1k次。起因:短信发送的应用场景非常多,在较大的系统中,短信一般作为单独的服务独立运行,而短信发送任务的触发基本有两种方式。1、定时获取Redis中短信发送任务,2、消息中间件订阅短息任务队列。RabbitMQ订阅短信:短信服务:短信服务为独立工程。将阿里云 SmsServer抽取为工具类。1、pom依赖: <!--RabbitMQ-->&..._basevo依赖

uiautomatorviewer拉取手机竖屏却显示为横屏的问题_uiautomatorviewer方向倒了-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏3次。uiautomatoruiautomatorviewer拉取手机竖屏却显示为横屏的问题拉取的页面显示解决方法将保存下来的图片进行旋转,旋转为竖屏显示并保存点击open,导入图片和uix格式文件显示正常uiautomatorviewer拉取手机竖屏却显示为横屏的问题拉取的页面显示解决方法点击save将保存下来的图片进行旋转,旋转为竖屏显示并保存点击open,导入图片和uix格式文..._uiautomatorviewer方向倒了

加密技术简介-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏32次。参考文章:信息加密技术简介 [浅谈加密技术](https://blog.csdn.net/fanyunda1988/article/details/50897216)加解密简介加解密分类常见的加密技术介绍其余问题,有关于AES 和 RSA 加密技术,对称加密,非对称加密。优点和缺点,以及API会用, 加密的原理。涉及到位运算。让你走一个算法的话你会怎么走? HTTP 和 H..._加密技术

使用迭代器Iterator遍历Collection_.keyset().iterator().next()-程序员宅基地

文章浏览阅读1.1k次。实现LRU算法时,发现使用java的LinkedHashMap时如果删除队头元素(最长时间未访问的元素),需要coll.remove(coll.keySet().iterator().next());因为Map中元素无序,根据key的hashCode()排序,而LinkedHashMap虽然有序,但是无法获取队头和队尾元素,所以只能采用迭代器模式。java.utils包下定义的迭代器接口:Iterator。Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的_.keyset().iterator().next()

推荐文章

热门文章

相关标签