一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别,如何选择窗函数

article/2025/8/7 19:17:03

一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别

    • 海宁窗和汉明窗
      • 时域波形
      • 频域响应
      • matlab window 工具
    • 如何选择窗

数字信号处理离不开频域分析,一定会用到FFT。做FFT之前又会用到窗函数。那么各种窗函数之间有什么区别呢?结论放在前面。

  • 窗函数有四个评价指标,泄露指数,主瓣宽度,旁瓣衰减,旁瓣滚降率。
  • 汉明窗(hamming)和海宁窗(hann)类似,汉明窗两端不能到零,而海宁窗两端是零。汉明窗能够减少很近的旁瓣泄露,但是稍远一点的旁瓣泄露比海宁窗严重。
  • 海宁窗(hann)大多数情况下都能满足需求。它同时具有很好的频率分辨率和较少的频谱泄露。如果不知道用什么窗。海宁窗是个不错的选择。

海宁窗和汉明窗

汉明窗(hamming)和海宁窗(hann)类似,汉明窗的时域波形两端不能到零,而海宁窗时域信号两端是零。从频域响应来看,汉明窗能够减少很近的旁瓣泄露,但是稍远一点的旁瓣泄露比海宁窗严重。

时域波形

在这里插入图片描述

频域响应

在这里插入图片描述

matlab window 工具

matlab的window 工具可以很好地分析各种窗函数。下面截图红色框中突出了窗函数的三个重要参数。

  • leakage factor 泄露指数
  • Relative sidelobe attenuation 旁瓣衰减
  • Mainlobe width(-3dB) 主瓣宽度

从三个指标来看,Hamming都要优于Hann,但实际上还有一个指标没有加进来,即旁瓣滚降率(sidelobe roll-off rate),可以很明显看出Hann的滚降率是大于Hamming的。Hann的滚降率为 -17.16dB/oct,而Hamming的滚降率为 -3.12dB/oct。
在这里插入图片描述
在这里插入图片描述

如何选择窗

  • 如果分析对象是单一频率信号的幅度分辨率比频域分辨率更高,则需要宽的主瓣。
  • 如果分析对象是单一频率信号,频域分辨率要求比幅度分辨率更高,则需要更窄的主瓣。

参考资料: Understanding FFTs and Windowing.pdf


http://chatgpt.dhexx.cn/article/UHwbIQX5.shtml

相关文章

FIR滤波器窗函数设计法——汉明窗设计实例

文章目录 前言一、FIR滤波器的设计方法1 窗函数设计法的原理2 窗函数的主要指标和设计方法3 汉明窗的特性和设计方法 二、汉明窗设计滤波器实例1.低通滤波器matlab示例2.高通滤波器matlab示例3.多通带滤波器matlab示例 前言 数字滤波器按单位抽样响应的时间特性可分为无限长单…

图像处理算法:最大类间方差法

转载于:https://www.cnblogs.com/abella/p/10646792.html

CV笔记5:图像分割之最大类间方差法、自适应阈值分割(基于python-opencv实现)

目录 一、简介 二、最大类间方差法(大津法) 2.1 最大类间方差法原理 2.2 基于opencv的实现(简单阈值分割、Otsu阈值分割) 三、自适应阈值分割 参考 一、简介 图像阈值化分割是一种传统的最常用的图像分割方法,因…

图像处理之:最大类间方差法法进行图像二值化处理

方法简介: gω0ω1(μ0-μ1)^2 对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0; 背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1,类间方差记为g。采用遍历的方法得到使类间方差最大的阈值T int…

学习笔记———《最大类间方差法》

最大类间方差法是由日本学者大津(N.Otsu)于1979年提出的,又叫大津法,简称Otsu法,是一种自适应的阈值确定的方法。 它的基本思想是以某一灰度值(如t)为阈值,将图像中的像素分成两类C0和C1,然后计算它们的方差&#xff0…

自动选择阈值--最大类间方差法(OTSU)原理及matlab实现

原理 基本思想: 把一幅图像分成两部分C0,C1.使前景和背景与平均灰度的差别最大。这种差异用方差sigmaB表示。 所以目标就是求最大方差sigmaB对应的阈值T。 matlab代码 clc clear ximread(rice.png); ax;subplot(211); imshow(a,[]); %[count x]imhist(…

【机器视觉学习笔记】大津法/Otsu最大类间方差法 最佳阈值处理(C++)

目录 概念C源码OtsuThreshold主函数 效果完整源码 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自C opencv 图片二值化最佳阈值确定(大津法,OTSU算法)——Sharon Liu 概念 Otsu算法,也叫最大类间方差法&#x…

使用matlab编程实现基于阈值分割的扫描文档二值化方法,MATLAB实现基于最大类间方差法的图像分割算法...

clear clc; %% 选择图片,并二值化 [fn,pn,fi]uigetfile(*.jpg,选择图片); Iimread([pn fn]); if ndims(I) 3 I rgb2gray(I); end % fxy imhist(I, 256); %统计每个灰度值的个数 [counts,x] imhist(I, 256) ; figure; subplot(2, 2, 1); imshow(I, []); title(原…

基于遗传算法的二维最大类间方差法的图像分割优化

一、背景 最大类间方差阈值分割法日本大津展之在1980年提出的,其基本思路是将图像的直方图以某一灰度为阈值,将图像分成两组并计算两组的方差,当被分成的两组之间的方差最大时,就以这个灰度值为國值分割图像。 遗传算法就是借鉴自…

数字图像处理——最大类间方差法(OTSU)图像阈值分割实例

数字图像处理——最大类间方差法(OTSU)图像阈值分割实例 数字图像处理——最大类间方差法(OTSU)图像阈值分割实例 图像阈值分割是指通过以某个确定的图像灰度值(灰度级)将图像分为不同的部分,…

【图像分割】最大类间方差法(otsu)图像分割

由Otsu(大津展之)于1978年提出的最大类间方差法,是引起较多关注的一种阈值选取方法。它是在判决分析或最小二乘原理的基础上推导出来的。 参考文献: [1] Otsu N. A threshold selection method from gray-level histogram. IEEE Trans,1979;SMC-9;62-66 …

最大类间方差法Ostu的C++实现

① 设灰度级为L,灰度值i的像素出现的频数为。分别为所纷呈的两个像素类的面积比,即 ② 分别为两个像素类的平均灰度值,即 ③计算类间方差,并找出最大类间方差以及对应的阈值。 ④ 求为最大值时的t,作为图像分割的最…

图像分割 - 阈值处理 - 最大类间方差法(OTSU)

目录 1. OTSU 介绍 2. 代码实现 1. OTSU 介绍 OTSU 大津法&#xff0c;也是最大类间方差算法 OTSU 算法的思想通过不同的阈值K&#xff0c;将图像的分为两个区域&#xff0c;一个是灰度值 0 < k < K 的子区域G1&#xff1b;另一个是灰度值 K1 < k < L-1 的子区…

【零散知识】最大类间方差法(大津法,Otsu)

前言&#xff1a; { 最近特别忙&#xff08;或者说时间规划出了问题&#xff09;&#xff0c;所以更新的都是短篇。 本次的内容是最大类间方差法&#xff08;大津法&#xff0c;Otsu&#xff09;。 } 正文&#xff1a; { 根据[1]中的介绍&#xff0c;大津法的主要作用是二值…

「 Redis 」 SkipList 跳表底层实现及应用

「 Redis 」 SkipList 跳表底层实现及应用 参考&鸣谢 Redis中ZSet的底层数据结构跳跃表skiplist&#xff0c;你真的了解吗&#xff1f; RiemannChow 深入理解跳表及其在Redis中的应用 京东云开发者 Redis跳表底层实现 来年花惜 文章目录 「 Redis 」 SkipList 跳表底层实现…

Redis 中的底层数据结构:SkipList

一、SkipList 简介 SkipList(5.0) 是zset的底层实现之一&#xff0c;它的数据结构定义如下&#xff1a; /* ZSETs use a specialized version of Skiplists */ typedef struct zskiplistNode {sds ele; //成员对象double score; //分值struct zskiplistNode *backward; //后退…

skiplist原理与实现

今天继续介绍分布式系统当中常用的数据结构&#xff0c;今天要介绍的数据结构非常了不起&#xff0c;和之前介绍的布隆过滤器一样&#xff0c;是一个功能强大原理简单的数据结构。并且它的缺点和短板更少&#xff0c;应用更加广泛&#xff0c;比如广泛使用的Redis就有用到它。 …

【数据结构】跳表Skiplist

文章目录 跳表--skiplistskiplist的概念skilplist的原理skilplist的实现随机值函数跳表节点 跳表框架查找函数寻找前置节点添加元素删除元素打印链表 测试结果Skiplist与其他Key-Value结构的比较 跳表–skiplist skiplist的概念 skiplist本质上也是一种查找结构&#xff0c;用…

Skiplist跳表详解及其模拟实现

文章目录 跳表1.跳表的概念2.Skiplist在插入时采用随机层数的方法是如何保证效率的呢?3.跳表的模拟实现4.跳表VS平衡搜索树和哈希表 跳表 1.跳表的概念 跳表是基于有序链表扩展实现的。对于一个普通的有序链表&#xff0c;我们查找数据的时间复杂度是O(N)。而跳表的出现&…

skiplist - 跳表

一 前言 跳表(skiplist、跳跃表) 是一个很优秀的数据结构&#xff0c;比如用于 Redis、levelDB等出名的开源项目上。跳表在原有的有序链表上面增加了多级索引&#xff0c;通过索引来实现快速查找。 它的结构特点在名称能很好的体现出来&#xff0c;就像兔子一样&#xff0c;蹦…