首页 > 其他分享 >窗函数

窗函数

时间:2022-08-29 13:34:14浏览次数:60  
标签:频谱 函数 FFT 截断 信号 周期

目录


1. 窗函数

1.1 为什么加窗

《什么是泄露?》中讲到 \(FFT\) 分析一次只能分析有限长度的时域信号。而实际采集的时域信号总时间很长,因此,需要将采样时间很长的时域信号截断成一帧一帧长度的数据块。这个截取过程叫做信号截断

假设有一段 \(10s\) 的时域信号,取 \(1\) 帧的长度 \(T=1s\),无重叠,则该信号将被截断为 \(10\) 帧,如下图所示。按此规律进行 \(FFT\) 计算,将得到 \(10\) 个瞬时频谱,如果将这些瞬时频谱进行平均,那么平均次数为 \(10\) 次,最终的 \(FFT\) 分析结果为这 \(10\) 个瞬时频谱的平均结果。

信号截断分为周期截断和非周期截断。周期截断是指截断后的信号为周期信号,而非周期截断是指截断后的信号不再是周期信号,哪怕原始信号本身是周期信号。

如果不是周期截断,截取后的信号将会存在泄漏,为了减少泄露误差,使用加权函数,也叫窗函数

加窗主要是为了使时域信号似乎更好地满足 \(FFT\) 处理的周期性要求,减少泄漏。

如下图所示,若周期截断,则FFT频谱为单一谱线。若为非周期截断,则频谱出现拖尾,如图中部所示,可以看出泄漏很严重。为了减少泄漏,给信号施加一个窗函数(如图中上部红色曲线所示),原始截断后的信号与这个窗函数相乘之后得到的信号为上面右侧的信号。可以看出,此时,信号的起始时刻和结束时刻幅值都为 \(0\),也就是说在这个时间长度内,信号为周期信号,但是只有一个周期。对这个信号做 \(FFT\) 分析,得到的频谱如下部右侧所示。相比较之前未加窗的频谱,可以看出,泄漏已明显改善,但并没有完全消除。因此,窗函数只能减少泄漏,不能消除泄漏。



1.2 窗函数的定义

何时何地应用何种窗函数?



标签:频谱,函数,FFT,截断,信号,周期
From: https://www.cnblogs.com/keye/p/16635640.html

相关文章

  • 第二章 函数
    函数函数头函数参数Unit函数匿名函数和隐式返回函数类型匿名函数参数和it关键字匿名函数的类型推断定义参数是函数的函数函数内联函数引用函数类型作为返回类......
  • COALESCE函数
    1.COALESCE函数简要定义:返回其参数中第一个非空表达式语法:COALESCE(expression[,...n])如果所有参数均为NULL,则COALESCE返回NULL用途:    (1):......
  • mysql的时间戳函数from_unixtime函数
    参考:https://www.cnblogs.com/lsz-lsc/p/12802015.html时间戳转为时间:from_unixtime(unixtime,format),其中unixtime必须为整型(bigint),d若时间为秒时是10位,时间为毫秒时为......
  • realpath函数,返回规范化的绝对路径名
    PHP中的realpath()函数是一个内置函数,用于返回规范化的绝对​​路径名。小编主要用于linux与window下路径问题的处理.之前小编本地的w11,程序运行的好好的.上传到服务器上......
  • ES6中的箭头函数与普通函数的区别
    箭头函数与普通函数的区别1、语法上更加简洁、清晰基本语法://关于箭头函数的参数//如果箭头函数没有参数,直接写一个括号即可letfun1=()=>{console.log('111......
  • 2022-08-29-Linux C 中connect函数用法及注意事项
    LinuxC中connect函数用法详细介绍及注意事项:C语言connect()函数的函数功能:简单来讲就是:我客户端,自身socket用于和服务端的socket建立socket连线。用于向目的IP和目......
  • 函数指针以及回调函数的应用
    一、什么是函数指针;指针是指向某一片内存空间的地址值,函数指针指的是指向函数初始访问地址的指针,我们可以通过这个函数指针来访问或者说调用该函数。相关代码解析如下......
  • vue中data为何一定是函数
    1、函数是以事件驱动的可重复调用的代码块,在组件复用时可以直接调用vue实例2、每次组件复用都会重新调用data函数,3、data在作为函数在数据调用时会return一个新对象使得......
  • SV中用于随机数生成的系统函数和方法
    SystemVerilog提供以下系统函数和方法来生成随机数:$urandom()$urandom_range()srandom()get_randstate()set_randstate()  1.$urandom()and$urandom_range()$u......
  • R语言中 trunc()、ceiling()、floor()、round() 函数
     001、floor 向下取整floor(5.3435)floor(3.8735)  002、round 四舍五入取值round(5.3435)##默认保留小数点后0位round(5.9435)roun......