什么是整周期采样?

假设正弦信号的频率f0是△f的整数倍,即有f0=a△f,a是整数,满足这一条件采得的数据称为整周期采样。把这一条件再进一步展开,可得

f0/(fs/N)=a

这说明在已知采样频率fs、数据长度N及正弦信号频率f0下,当满足上式时,该数据对f0信号是整周期采样。

在信号处理中,经常会遇到经窗函数截断以后,有的没有发生泄漏,但有的发生了泄漏。

案例、有一个余弦信号,信号频率30Hz,信号为x(t)=cos(2π×30t),采样频率fs=128Hz,样本长度分别取N=128和N=100,在FFT后作谱图并比较谱图中的差别。程序分两部分,程序如下:

clear all; clc; close all;fs=128;                         % 采样频率
% 第一部分
N=128;                          % 信号长度
t=(0:N-1)/fs;                   % 时间序列
y=cos(2*pi*30*t);               % 余弦信号
Y=fft(y,N);                     % FFT
freq=(0:N/2)*fs/N;              % 按式(2-2-7)设置频率刻度
n2=1:N/2+1;                     % 计算正频率的索引号
Y_abs=abs(Y(n2))*2/N;           % 给出正频率部分的频谱幅值
% 作图
subplot 211; stem(freq,Y_abs,'k')
xlabel('频率(Hz)'); ylabel('幅值');
title('(a) Fs=128Hz, N=128')
axis([10 50 0 1.2]); % 第二部分
N1=100;                           % 信号长度
t1=(0:N1-1)/fs;                   % 时间序列
y1=cos(2*pi*30*t1);               % 余弦信号
Y1=fft(y1,N1);                    % FFT
freq1=(0:N1/2)*fs/N1;             % 按式(2-2-7)设置频率刻度
n2=1:N1/2+1;                      % 计算正频率的索引号
Y_abs1=abs(Y1(n2))*2/N1;          % 给出正频率部分的频谱幅值
% 作图
subplot 212; stem(freq1,Y_abs1,'k')
xlabel('频率(Hz)'); ylabel('幅值');
title('(b) Fs=128Hz, N=100')
axis([10 50 0 1.2]); hold on
line([30 30],[0 1],'color',[.6 .6 .6],'linestyle','--');
plot(30,1,'ko','linewidth',5)
set(gcf,'color','w');

运行结果如下:

在程序两部分中用相同的信号,中心频率f0=30,采样频率fs=128,差别仅是FFT的长。在N=128的谱图上只在30Hz处有一条谱线,其他频点的幅值都为0;而在N=100的谱图上有明显的泄漏现象,谱线用黑实线表示。最大两根谱线在30Hz两侧,图中用虚线和黑圈点表示了30Hz的频率点。为什么当N=128时FFT后没有泄漏,而当N=100时FFT后就有泄漏?

分析:可知在加矩形窗之后,单一频率信号的频谱图表达式为

已不是一个单一的δ函数,而是有泄漏的存在。设信号是频率为f0,当取信号为整周期采样时,信号的频率f0=a△f,a=k,f0将与某一条谱线相重合,如同程序第一部分表示的那样,即第k条谱线频率为f0。整周期采样后得到的幅值谱图如图(a)和下图所示。

在整周期采样后得到的XT(w),一样存在着泄漏的可能性,但由于信号频率f0与第k条谱线重合,k±i(i为整数值)的任意谱线正好落在XT(w)的零点上,所以在谱图中就没有显示泄漏现象。
当取信号为非整周期采样时,信号的频率f0不与FFT后某一条谱线重合,而是像案例的程序第二部分表示的那样,f0落在两条谱线的中间,例如落在第k和k+1条谱线之间,其中第条谱线是局部极大值,如图(b)和下图所示。

在非整周期采样时得到的XT(w),一样存在着泄漏的可能性,由于信号频率f0在两条谱线之间,第k条谱线虽是局部的最大值,但不与f0相重合,则k±i(i为整数值)的任意谱线都是XT(w)函数上的非零值,所以在谱图中存在泄漏现象。

为了防止泄漏,对于单频信号可以调整采样频率使之构成整周期采样(例如在电力监测设备中,有的会用锁相技术跟踪信号频率以调整采样频率),但大多数实际信号处理中的信号不是单频(或单频+谐波),而是多频率的,所以泄漏是难免的。在有泄漏的情形中只能想方设法减小泄漏的影响,比如利用窗函数。虽然上述已在截断的讨论中加了矩形窗函数,但矩形窗函数的泄漏是最大的,还有其他窗函数能更好地减少泄漏。

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

对于单频信号出现频谱泄露的解决办法——整周期采样相关推荐

  1. 有关FFT频谱泄露与整周期采样问题v1.0(待修)

    Title:有关FFT频谱泄露与整周期采样问题的总结整理内容 Date:2022.6.21 //内容部分为从网上摘抄整理,未含有严谨的数学证明,较为易懂.   在实际的数字信号分析中,我们处理的数据都 ...

  2. 单频信号的相位谱计算与误差修正-附Matlab代码

    一.问题描述 我们在实际处理时经常遇到只有一个正弦信号的情况,其频率为 f 0 {{f}_{0}} f0​,在谱分析以后,除了在频率为 f 0 {{f}_{0}} f0​处有相位数值外,其他频率处都有 ...

  3. PHP中表单没有问题但是$_FILES为空的解决办法

    PHP中表单没有问题但是$_FILES为空的解决办法 参考文章: (1)PHP中表单没有问题但是$_FILES为空的解决办法 (2)https://www.cnblogs.com/sanqiyi/p/ ...

  4. php502bad gateway,PHP表单提交后出现502 bad gateway解决办法

    搜索热词 <PHP表单提交后出现502 bad gateway解决办法>要点: 本文介绍了PHP表单提交后出现502 bad gateway解决办法,希望对您有用.如果有疑问,可以联系我们 ...

  5. 在MFC框架下使用osg报内存泄露的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ 最近正在学习osg,从osgchina网站下下载了osg的debug版本库,具体地址为: OpenSceneGrap ...

  6. linux网卡强制5G频率,用户反馈称Deepin 20对某些WIFI的5G信号无法接收,附解决办法...

    有些用户在Deepin 20系统中使用无线连接上网,但是有反馈称:某些WIFI的5G信号无法接收/识别,有些人的则是能够识别到,并显示在无线列表中,如下图所示.以下附上评论及解决办法. 用户评论 1. ...

  7. 下拉菜单被表单、图片、FLASH挡住的解决办法

    设置Flash的参数: <param name="wmode" value="opaque"> <object classid="c ...

  8. 表单提交 参数为中文时乱码解决办法

    表单代码: <form class="well form-search" id="searchInfoForm" target="_blank& ...

  9. EasyCVR平台安全扫描提示Go pprof调试信息泄露的解决办法

    我们在此前的博文中和大家分享过关于GO中pprof调试会提示信息泄露的处理办法,感兴趣的用户可以翻阅我们往期的文章进行了解.近日在多个EasyCVR使用现场中,用户进行安全扫描时,均反映了如下的漏洞情 ...

最新文章

  1. jsp打印日志完整配置
  2. CSS中块级格式化上下文(BFC)的特性与应用
  3. APP自动化测试系列之获取Android的Activity 和 Package
  4. 一头感动了全中国的“猪”!感动了全世界!泪奔
  5. html 前端传入后台为object_浅谈Object.defineProperty()
  6. 启动时不自动打开一个空文档
  7. oracle job 与存储过程,讲解Oracle中JOB与存储过程的接合用法
  8. C#把Xml转换为DataSet的两种方法
  9. VS出现error LNK2005,error C4430,error C2011
  10. 计算机毕业论文中期论文质量,计算机 毕业论文(设计)中期报告(1页)-原创力文档...
  11. 《Rework》摘录及感想
  12. 手机版支付宝html页面,支付宝手机网页支付代码
  13. Android intent.Action 参数值及对应功能介绍(转)
  14. sh股票是什么意思?
  15. Linux下看股票行情的绿色小软件
  16. tkintertools 模块实战一:任务清单小工具
  17. 如何获取主机名和当前登录用户名
  18. 【2023秋招】10月9日字节跳动校招题目
  19. java2048小游戏源码及解析_200行java代码实现2048小游戏
  20. Log4j2的MDC详解

热门文章

  1. SMART PLC运动超驰功能编程应用(含V2.7版本固件下载)
  2. 一个访问不了造成的祸害
  3. Eclipse android 项目转android studio填坑之旅
  4. LINGO求解规划问题代码
  5. 用Dual-Thrust策略回测CTA
  6. 外壳IK碰撞冲击测试
  7. csdn涨粉秘籍测评
  8. 双系统重装ubuntu18.04
  9. objective-c语言特点及基础(相较于C语言)
  10. 自定义控件:圆形进度条的实现