一般的,对正余弦信号进行採样并DFT运算,画出频谱图,会发现频谱并不干净。这样的现象称为频谱泄漏。由于DFT运算仅仅能是有限序列,突然的截断产生了泄漏。

会有这种特殊情况。当採样截取的刚好是整数个周期,则频谱图显得特别干净。

能够理解为刚好取的完整周期。周期性明显了,频率就比較单一。

为此做了matlab实验:

ts = 0.01;%採样率100Hz

n = 0:N-1;

y = sin(2*pi*20*n*ts);%20Hz信号,每周期採5个点

xk = abs(fft(y,N));%注意依据fft算法,这里的N和序列长度N是一样的

stem(xk);

当N = 20、22、24、25时的频谱:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVudGVybGV3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

由于20和25是5的倍数。取的周期是完整的。所以频谱是干净的。这就是所谓的特殊情况。

但一般的,取不到完整的周期,频谱泄漏是避免不了的。并且泄露的严重了会影响分辨能力。那么接下来的问题是,怎么提高分辨力?

我们试一试採样点数,同一时候FFT点数也添加了。当N=64时的频谱:

通常DFT点数能够添加。採样点数添加不了。于是我们有了补零的方法。

以上面的样例为例。还是64点DFT,可是n是0:24,后面的补零,即 y = [sin(2*pi*20*n*ts),zeros(1,39)];补到64个点。这样得到的频谱是:

我们再取高的点数。当採样点数等于DFT点数等于1024时的频谱:

当採样点数靠补零的方法补到1024个点的频谱:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVudGVybGV3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

因此我们得到重要结论:

为了使得频谱更加精确,即逼近于DTFT的波形,有两种方法。第一种方法是採样长度和DFT长度都添加,假设可能应该尽可能採取这样的方法,这样的方法能提高实际的分辨率,降低泄漏。另外一种方法是添加DFT长度,而採样长度通过补零补到一样的长度。这样的方法仅仅能添加视在分辨率。该泄漏的还是泄漏了。

正余弦信号的DFT频谱分析的更多相关文章

  1. MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)

    关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...

  2. 【pyqtgraph绘图】案例-动态的正余弦波形图

    先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import Q ...

  3. 大话DFT频谱分析(并不是我的话)

    有限长信号DFT结果的频谱泄露 提出问题 依照我们在"信号与系统"这门课建立的印象,不管如何频率的连续正弦信号,其频谱应当是两根笔直的谱线(含负频率) 但是,当我们把一段正弦信号採 ...

  4. GPU编程shader之正余弦波和幂/指数函数

    先上一个demo代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  5. 使用CORDIC算法求解角度正余弦及Verilog实现

    本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...

  6. 余弦信号DFT频谱分析(继续)

    以前谈到序列的实际长度可以通过零填充方法加入,使得最终增加N添加表观分辨率. 但它并没有解决泄漏频率的问题. 根本原因在于泄漏窗口选择的频率. 由于矩形窗突然被切断,频谱旁瓣相对幅度过大,造成泄漏分量 ...

  7. MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合

    问题:如何快速把$cos^4xsin^3x$表示成正弦,余弦的线性组合? 分析:利用牛顿二项式展开以下表达式: 再利用欧拉公式$e^{i\theta}=cos\theta+isin\theta$ 比如 ...

  8. matplotlib 绘制正余弦曲线图

    1.普通风格 代码 import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 2*np.pi, 50)y1 = np.s ...

  9. 微弱信号二次谐波检测的FPGA的实现-总结

    首先还是把握大的系统框架: 我要实现的部分不包括DA以及AD的转换,主要是将SSP接收到的数据送入到FIFO中,然后经过FIR带通滤波器的处理后对该信号计算幅值并做PSD,然后处理的信号经过积分够一方 ...

随机推荐

  1. Angular 下的 directive (part 2)

    ngCloak ngCloak指令被使用在,阻止angular模板从浏览器加载的时候出现闪烁的时候.使用它可以避免闪烁问题的出现.   该指令可以应用于<body>元素,但首选使用多个ng ...

  2. JavaScript编写风格指南 (三)

    七(七):严格模式 // 严格模式应当仅限在函数内部使用,千万不要在全局使用 //不好的写法:全局使用严格模式"user strict"; function doSomething ...

  3. TED_Topic7:How we unearthed the spinosaurus

    By Nizar Ibrahim A 50-foot-long carnivore who hunted its prey in rivers 97 million years ago, the sp ...

  4. 银行卡号码校验算法(Luhn算法,又叫模10算法)

    有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢. 对于银行卡号有一个校验算法,叫做Luhn算法. 一.银行卡号码的校 ...

  5. arm GIC介绍之四【转】

    转自:https://blog.csdn.net/sunsissy/article/details/73882718 GIC是ARM体系中重要的组件,在认识到GIC的组成和功能之后,了解到IRQ的大致 ...

  6. Linux驱动技术(四) _异步通知技术【转】

    转自:https://www.cnblogs.com/xiaojiang1025/p/6376561.html 异步通知的全称是"信号驱动的异步IO",通过"信号&quo ...

  7. springcloud微服务架构搭建:服务调用

    spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign. Ribbon是一个基于HTTP和TCP客户端的负载均衡器,类似nginx反向代理,可 ...

  8. Java8系列之重新认识HashMap

    转自:  http://www.importnew.com/20386.html   简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是Ha ...

  9. 详解使用 Tarjan 求 LCA 问题(图解)

    LCA问题有多种求法,例如倍增,Tarjan. 本篇博文讲解如何使用Tarjan求LCA. 如果你还不知道什么是LCA,没关系,本文会详细解释. 在本文中,因为我懒为方便理解,使用二叉树进行示范. L ...

  10. yum命令简介

    yum 一些较常见的用法 命令 功能 yum check-update 检查可更新的所有软件包 yum update 下载更新系统已安装的所有软件包 yum upgrade 大规模的版本升级,与yum ...