在加窗函数前、后计算的频谱幅值发生了变化(矩形窗除外),这个变化是怎么发生的?该如何修正幅值呢?下面以汉宁窗函数为例进行说明。

一、矩形窗函数和汉宁窗函数的频谱

先来说明矩形窗函数的频谱。设离散的矩形窗函数rN(n)为

rN(n)的离散时间傅里叶变换(DTFT)为

利用三角函数的关系,由式(2-2-28)可导出


 式(2-2-29)就是矩形窗函数DTFT的频谱。

设汉宁窗函数为

式中:rN(n)就是式(2-2-27)的矩形窗函数。由式(2-2-23)wH(n)的离散时间傅里叶变换
(DTFT)为

式中的Rv就是矩形窗函数的DTFT频谱,由式(2-2-29)表示;而式(2-2-31)给出了汉宁窗函数DTFT的频谱。

二、汉宁窗的幅值修正计算如下:
设修正系数为K,定义为

式中:AR为矩形窗的幅值,AH为汉宁窗的幅值。把式(2-2-29)与式(2-2-31)相除,令w=
0,有

将上式中w=2π/N代人到式(2-2-29)中,RN(土2π/N)的值为0。所以得到KH=2,KH表示为汉宁窗的修正系数。
下面把一些主要窗函数的幅值恢复系数列,在下表中,表内MATLAB函数中的N是窗函数的长度。

案例、信号由两个余弦信号组成,频率分别为f1=50Hz和f2=65.75Hz,幅值都为1,初始相角都为0,信号长度为1000,采样频率为1000Hz。通过加汉宁窗函数FFT求出两个正弦信号的幅值和初始相角。程序如下:

clear all; clc; close all;fs=1000;                         % 采样频率
N=1000;                          % 信号长度
t=(0:N-1)/fs;                    % 设置时间序列
f1=50; f2=65.75;                 % 两信号频率
x=cos(2*pi*f1*t)+cos(2*pi*f2*t); % 设置信号
wind=hanning(N)';
X=fft(x.*wind);                  % 乘窗函数并FFT
Y=abs(X)*2/1000;                 % 计算幅值
freq=fs*(0:N/2)/1000;            % 设置频率刻度
[A1, k1]=max(Y(45:65));          % 寻求第1个信号的幅值
k1=k1+44;                        % 修正索引号
[A2, k2]=max(Y(60:70));          % 寻求第1个信号的幅值
k2=k2+59;                        % 修正索引号
Theta1=angle(X(k1));             % 计算信号f1的初始相角
Theta2=angle(X(k2));             % 计算信号f2的初始相角
Y1=Y*2;                          % 对加窗后的幅值进行修正
% 显示频率和幅值
fprintf('f1=%5.2f   A1=%5.4f   A11=%5.4f   Theta1=%5.4f\n',freq(k1),A1,A1*2,Theta1);
fprintf('f2=%5.2f   A2=%5.4f   A21=%5.4f   Theta2=%5.4f\n',freq(k2),A2,A2*2,Theta2);% 作图
subplot 211; plot(freq,Y(1:N/2+1),'k'); xlim([40 75]);
line([0 100],[.5 .5],'color','k');
xlabel('频率/Hz'); ylabel('幅值'); title('(a)频谱图-幅值修正前');
subplot 212; plot(freq,Y1(1:N/2+1),'k'); xlim([40 75]);
line([0 100],[1 1],'color','k');
xlabel('频率/Hz'); ylabel('幅值'); title('(b)频谱图-幅值修正后');
set(gcf,'color','w');

运行结果如下:
 

其中f1和f2表示两信号的频率,A1和A2表示两信号修正前的幅值,A11和A21表示两信号修正后的幅值,Theta1和Theta2表示两信号的初始相位角。而第1个信号的幅值和初始相角非常接近
于设置值,误差比例2-2-2的结果有很大的改善(例2-2-2中求得信号f1的幅值为A1=0.9896,初始相角为Thetal=0.0089)。这说明两个问题:①在例2-2-2中幅值和初始相角产生的误差是由第2个信号的泄漏造成的;②加了窗函数以后能减小泄漏,但幅值还是有些误差,若使用泄漏更小的窗函数则可进一步提高幅值的精度。

参考文献:MATLAB数字信号处理85个实用案例精讲——入门到进阶;宋知用(编著)

加窗函数后频谱幅值发生了变化的修正技巧相关推荐

  1. 频谱分析幅值单位_NVH测试中的频谱分析

    来源:朗德科技微信公众号(ID:landtop-tech) 频谱分析是对采集到的时域信号进行数字信号处理,得到频域结果的分析过程.信号不仅随时间变化,还与频率结构和各频率成分的幅值.相位等信息有关,如 ...

  2. Matlab 计算 FFT 的方法及幅值问题

    欢迎转载,但请一定要给出原文链接,标注出处,支持原创! 谢谢~ https://blog.csdn.net/qq_29225913/article/details/105467006 目录 1.Mat ...

  3. .net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...

  4. svpwm矢量控制电机相电压波形_SVPWM调制中的6个非零基础电压矢量的幅值到底是Udc还是2/3Udc ? 电压利用率为什么是1?...

    16年抛出来的一个问题,无意间又看到了,感觉哪怕是个小问题,但是能去伪存真,能为更多认真的人所有用,那也是在改变世界 其实也是因为看到这位兄台的留言,更加激发了我要写这篇文章:隐隐的感受,其实世界上, ...

  5. 信号归一化功率_[振动与测试 3] 自功率谱Autopower及幅值显示形式

    本篇给大家介绍自功率谱Autopower的含义.幅值的显示形式.最好结合上篇PSD的介绍对比来看. LMS Test.Lab 我们拿熟悉的LMS Test.lab软件中的设置参数举例,对于Autopo ...

  6. 功率谱 幅值谱_语音合成中的Mel谱和MFCC谱无区别

    语音合成目前比较流行的方案是Tacotron(2) + WaveNet(WaveRNN, LPCNet)等神经网络声码器. 这些方案的流程大致相同,先由文本生成特征谱,再将特征谱重建为音频.在选择特征 ...

  7. ad采样的符号位_AD位数是如何影响信号幅值的?

    数据采集设备一个重要的指标就是AD位数,我们都知道AD位数越高越好.但这个"好"到底体现在哪些方面呢?AD位数到底对数据采集有哪些影响呢? AD位数的实质是指模数转换数据时使用多少 ...

  8. matlab fft后加abs,关于FFT变换之后,幅值对应不上的问题

    还有个问题就是:在我进行傅里叶变换后幅值变得太大,这是怎么了? 用的你的程序,我用的程序是%%%%%%%%%%%%%%%%%%%%% clear clc close all hidden %%%%%% ...

  9. matlab频谱图幅值意义,时域波形傅里叶分析之后,频率-幅值波形图意义 – MATLAB中文论坛...

    %对单一的5元的样本纸币进行傅里叶分析,画出频率-幅值图(频谱图) %处理顺序: %第一步:冠字码信号时间序列 %第二步:数据预处理(数据平滑滤波),此处没有用到数据压缩,因为快速傅里叶变换涉及到采样 ...

最新文章

  1. mac远程连接windows工具_Windows远程MAC系统
  2. applicationContext.xml 配置文件的存放位置
  3. 无法下载linux系统的驱动精灵,有没有LINUX版的 驱动精灵 破系统搞驱动太费劲,尤其笔记本电脑...
  4. Google V8 编译方法(visual c++ 2008 express)(学习+原创)
  5. swoole会合并到php吗,thinkphp整合swoole
  6. 资源下载| 机器学习经典书籍《统计学习方法》(Python3.6)代码实现(及课件)
  7. mysql for mac
  8. Cache计算的再总结
  9. bind 绑定标签的用法
  10. 12. PHP 函数
  11. CNN已老,GNN来了:重磅论文讲述深度学习的因果推理(附资源)
  12. 动易sitefactory 3.0 模板标签系统
  13. 程序员零下20度雪地求婚快冻伤 女友却崩溃了
  14. 颜色空间RGB与TSL的转换
  15. SUSE退出Ceph市场转向Longhorn
  16. ES(四)ES使用(基本查询、聚合查询)
  17. tipask二次开发总结_tipask二次开发总结
  18. 绝对良心提供百度网盘的jdk1.8源码下载包含sun包的
  19. 嵌入式系统硬件体系设计(一)
  20. openstack项目中遇到的各种问题总结 其一(问题多多)

热门文章

  1. Word中利用字体把文字转换为特殊图案(转)
  2. Linux系统 虚拟化篇之KVM
  3. 计算机控制技术应用与前景论文,论计算机和网络控制系统发展趋势论文
  4. 阿里CEO张勇首次披露当年入职阿里原因:太太是淘宝粉丝
  5. CSS:改变 icon 图片的颜色
  6. 装系统:分区助手分区
  7. web前端基础——第一章
  8. 病理学技术师题库(含答案)
  9. DOMString、Document、FormData、Blob、File、ArrayBuffer数据类型
  10. matlab repmat函数的用法