FIR---Matlab 如何选择窗函数和 FFT 的长度_matlab 窗函数-程序员宅基地

技术标签: matlab  算法  信息与通信  Matlab数字信号处理  信号处理  

FIR---Matlab 如何选择窗函数和 FFT 的长度

各种窗函数的介绍,见:

数据截断、频谱泄漏与窗函数的选择_布莱克曼窗_yishuihan-Oliver的博客-程序员宅基地

1、常用的四种窗函数

       对于实际信号序列,如何选取窗函数呢?一般来说,选择第一旁瓣衰减大,旁瓣峰值衰减快的窗函数,有利于緩解截断过程中产生的频谱泄漏问题。但具有这两个特性的窗函数,其主瓣寛度较大,相应会帯来一些副作用,应用中需根据具体情况折中地选择。

       设信号中包含f_{a} 和  f_{b} 两个频率分量,窗函数的选择与两个频率分量的间距以及两个频率分量的幅度比例密切相关。窗函数选择的一般准则如表2-2-2所列。

        主瓣窄的窗函数一般旁瓣泄漏大,频谱泄漏主要集中在旁瓣范围内。旁瓣衰减大的窗函数,一般主瓣较宽,泄漏主要集中在主瓣范围内。

       当选择加窗DFT时,已知采祥长度 N 的选择与最小頻域分辨率有关,而从表2-2-1中看到采长度 N 还与窗函数的主瓣寛度相关,所以 N 的选择应为:  N\geqslant \frac{f_{s}}{\Delta f_{min}}*K   (式 2-2-26) 

式中:K 为窗函数的主瓣寛度与矩形窗的主瓣寛度之比。 

根据窗函数对数据处理的影响,可参照下列原則选取理想的窗函数:

  • ①窗函数频谱的主瓣尽可能地窄,以提高谱估计时的頻域分辨率和减小泄漏。 
  • ②尽量减小窗函数频谱的最大旁瓣的相对幅度,以使旁瓣高度随頻率尽快衰减。

若以上两条不能同时得到満足,则往往是増加主瓣寛度以換取旁瓣的抑制。 

       总之,在应用窗函数时,除要考窗函数本身的特性外,还应充分考虑被分析信号的特点及具体处理要求。

2、实例

例:已知信号x(t) 中 50Hz 频率分量的幅值为 311,46Hz 频率分量的幅值为 1.55,采样频率f_{s}=8000Hz。要求 46Hz 信号的幅度分析进度不低于 5%,试问:

  1. 选择何种类型的窗函数比较合适?
  2. 采样长度 N 应为多少?
  3. 分析信号的实际频谱。

       分析:由于 50Hz 频率分量幅度远大于 46Hz 频率分量,需要防止 50Hz 频率分量对 46Hz 频率分量的泄漏,同时考虑 46Hz 分量分析精度的要求,允许 50Hz 频率分量的最大泄漏为20*\lg \left | \frac{1.55}{311} *0.05\right |=-80dB

       以上介绍的窗函数中没有一个窗函数的第一旁瓣衰减能达到 -80dB;但可以选择旁瓣衰减大、高频衰减速度快的窗函数,以满足实际衰减要求。根据表2-2-1,选择布莱克曼窗比较合适。布莱克曼窗第3个旁瓣衰减为(-58-18*3)= -112dB。

此时,采样长度的选择不但要考虑窗函数的主瓣宽度,还要考虑旁瓣位置:

N\geqslant \frac{f_{s}}{\Delta f_{min}}*(K+M)=\frac{8000}{50-46}*(3+3)=12000

式中:K为窗函数的主瓣宽度与矩形窗的主瓣宽度之比,M为旁瓣位置。按表2-2-1中信息,矩形窗的主瓣宽度为 \frac{4\pi }{N},而布莱克曼窗的主瓣宽度为 \frac{12\pi }{N},所以 K=3;又取布莱克曼窗第3个旁瓣,M=3。

Matlab 程序如下:

% Matlab 如何选择窗函数和 FFT 的长度
% 
% pr2_2_11  
clear; clc; close all;

f1 = 50; a1 = 311; % 设置第1个分量的频率与幅值
f2 = 46; a2 = 1.57; % 设置第2个分量的频率与幅值
N = 12000; % 设置数据长度N
fs = 8000; % 设置采样频率fs
t = (0:N-1)/fs; % 设置时间刻度
x = a1*cos(2*pi*f1*t)+a2*cos(2*pi*f2*t); % 设置信号
freq = (0:N/2)*fs/N; % 设置频率刻度
wind = blackman(N)'; % 给出布莱克曼窗函数
X = fft(x.*wind); % FFT

% 作图
plot(freq,20*log10(abs(X(1:N/2+1))),'k');
grid; xlim([0 100])
xlabel('频率/Hz');
ylabel('幅值/dB');
title('信号谱图');
set(gcf,'color','w');

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

智能推荐

linux 内核升级-程序员宅基地

文章浏览阅读841次,点赞28次,收藏9次。centos 7.x 升级内核 3.x 至 5.x

去掉java文件中的注释_利用JavaParser去除java文件中的注释-程序员宅基地

文章浏览阅读922次。利用JavaParser去除java文件中的注释个人博客:记录一下在项目实施过程中的一些点情景回顾之前项目有个需求,就是去掉.java文件中的所有注释,常用的方法是用正则匹配。然而在网络上查找到的正则或多或少都有一些问题,无法匹配到所有的情况。或者说,由于写.java文件的人的不规范(各种奇葩的问题),导致正则覆盖不全。所以正则方法不靠谱,或者说,存在一定的限制。新的想法后来想到利用AST来去除注..._在线java代码去除注释工具

VSCode - 使用VSCode远程连接到Linux并实现免密码登录_vscode连接linux-程序员宅基地

文章浏览阅读3w次,点赞77次,收藏282次。VSCode - Linux - 使用VSCode远程连接到Ubuntu并实现免密登录我使用的是Ubuntu14.04,即便是使用其他发行版也不会影响操作步骤_vscode连接linux

生活随记-腊月第一天-程序员宅基地

文章浏览阅读2.3k次。年底了总是很容易思考人生。出差坐在太原的yd酒店15楼,泡一壶茶翻着书听点音乐,坐在窗边看下空旷冷清的街道。感叹一声,逝者如斯夫不舍昼夜。这一年年过得真快。思考着自己的工作和以后的生活,何去何从。很多事情形成习惯之后就会懒得去改变,逐渐形成一种倦怠。工作,生活,投资也是。也好,今晚就让自己沉浸在无尽交织的思绪中吧。明天睡个懒觉吃个brunch回上海。转眼又到12月了。..._腊月第一天

ftp 下载时防止从缓存中获取文件-程序员宅基地

文章浏览阅读1k次。//http://baike.baidu.com/link?url=QucJiA_Fg_-rJI9D4G4Z4687HG4CfhtmBUd5TlXrcWCeIEXCZxIh0TD7ng1wROAzAuGD8qncM65XK4BZ1K1uqqintCFTP_MFC_TESTDlg::FTP_DownLoadFile(char*FtpIp,char*User,char*Passwor..._ftp 不使用缓存

windows下配置IIS以及优化配置_windows iis-程序员宅基地

文章浏览阅读2.7k次。IIS配置及优化_windows iis

随便推点

linux系统rabbitmq安装步骤_rabbitmq linux安装-程序员宅基地

文章浏览阅读768次。一、安装erlang:1、先下载rpm包:wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm2、rpm包:rpm -Uvh erlang-solutions-1.0-1.noarch.rpm可能会有以下问题:解决办法:(执行以下命令后,在执行上一条命令)yum..._rabbitmq linux安装

CentOS 7 安装最新版Docker教程_centos7安装最新版dockers-程序员宅基地

文章浏览阅读781次。docker安装官方文档:Install Docker Engine on CentOS2、安装提供了工具3、通过添加docker repository如果出现上面的错误提示,可通阿里源进行添加4、安装docker4.1、直接安装最新版本这步完成后可直接跳至启动docker4.2、或者安装指定版本按版本号倒序列出可安装版本列表安装指定版本例如安装20.10.9版本5、启动docker通过进行启动设置docker服务开机启动6、测试7、卸载docker下的_centos7安装最新版dockers

敏感字识别算法基于JDK8 lambada表达式_敏感文本识别算法-程序员宅基地

文章浏览阅读429次。package aaa.bbb.demo;import java.util.ArrayList;import java.util.List;public class RecognitionDemo { public static void main(String[] args) { String str1="SB哈NM哈哈哈WBDhdsada"; String str_敏感文本识别算法

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统Huawei HarmonyOS

JS读取粘贴板内容-程序员宅基地

文章浏览阅读4.9k次。1.1 监听onpaste事件1.1.1 定义和用法npaste 事件在用户向元素中粘贴文本时触发。注意:虽然使用的 HTML 元素都支持 onpaste 事件,但实际上并非支持所有元素,例如 <p> 元素, 除非设置了 contenteditable 为 "true" (查看下文的更多实例)。提示:onpaste 事件通常用于 type="text" 的 ..._js 获取粘贴板内容 移动端

Win10系统下软件UI显示不完整解决方案_用苹果设计的ui在win显示不明显-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏4次。在最初升级win10的时候就想到了这些问题,例如和各种软件的不兼容性。当然,事实上win10并没有想象的那么糟,作为一个windows user 来说,win10的确是很高大上的,无论是颜值或者是体验,都让人爱不释手。下面我就说一下最近和win10的那些事之一:在win10系统下安装了IBM Cognos Transform后,Transform的一些设计界面不能完全显示,而后我们就是要想办法_用苹果设计的ui在win显示不明显

推荐文章

热门文章

相关标签