正余弦信号的DFT频谱分析
一般的,对正余弦信号进行採样并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频谱分析的更多相关文章
- MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)
关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...
- 【pyqtgraph绘图】案例-动态的正余弦波形图
先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import Q ...
- 大话DFT频谱分析(并不是我的话)
有限长信号DFT结果的频谱泄露 提出问题 依照我们在"信号与系统"这门课建立的印象,不管如何频率的连续正弦信号,其频谱应当是两根笔直的谱线(含负频率) 但是,当我们把一段正弦信号採 ...
- GPU编程shader之正余弦波和幂/指数函数
先上一个demo代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 使用CORDIC算法求解角度正余弦及Verilog实现
本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...
- 余弦信号DFT频谱分析(继续)
以前谈到序列的实际长度可以通过零填充方法加入,使得最终增加N添加表观分辨率. 但它并没有解决泄漏频率的问题. 根本原因在于泄漏窗口选择的频率. 由于矩形窗突然被切断,频谱旁瓣相对幅度过大,造成泄漏分量 ...
- MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合
问题:如何快速把$cos^4xsin^3x$表示成正弦,余弦的线性组合? 分析:利用牛顿二项式展开以下表达式: 再利用欧拉公式$e^{i\theta}=cos\theta+isin\theta$ 比如 ...
- matplotlib 绘制正余弦曲线图
1.普通风格 代码 import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 2*np.pi, 50)y1 = np.s ...
- 微弱信号二次谐波检测的FPGA的实现-总结
首先还是把握大的系统框架: 我要实现的部分不包括DA以及AD的转换,主要是将SSP接收到的数据送入到FIFO中,然后经过FIR带通滤波器的处理后对该信号计算幅值并做PSD,然后处理的信号经过积分够一方 ...
随机推荐
- 20155232 2016-2017-3 《Java程序设计》第8周学习总结
20155232 2016-2017-3 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章NIO与NIO2 NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲 ...
- expect 交互 telnet 交互
telnet 交互 #!/bin/bash Ip="10.0.1.53" a="\{\'method\'\:\'doLogin\'\,\'params\'\:\{\'uN ...
- Django之初始庐山真面目
Django可以说是基于Python语言的一款非常成熟的框架,其功能之强大,应用之广泛,开发之便捷,可以说每一个细节都值得一赞 最重要的是,Django其实是我们学习Python过程中非常重要的部分之 ...
- Linux进程托管与守护进程设置
引言 在上一篇<Linux启动之旅>中,我们了解了Linux启动过程,在该过程的最后一步,init进程拉起/etc/init.d/rcN.d/目录下指定的守护进程(daemon).假若自定 ...
- c#按字符串中的数字排序问题
在.net 的framewrok框架中提供的排序方法中,如string.sort() 或ArrayList.Sort()方法.这两个方法对字符串排序时,如果字符串中含有数字,则不会按数字大小排序.如: ...
- php递归函数细节
<?php /** *php递归函数细节 *从1到5的阶乘 * */ header("Content-Type:text/html;charset=utf-8"); func ...
- 转 Spring Boot之No session repository could be auto-configured, check your configuration问题解决
1. 环境介绍 JDK 1.8 Spring-Boot 1.5.1.RELEASE, STS IDE 2. 问题的提出 创建了一个非常简约的Spring Boot Web Application ...
- 【Android】隐藏底部虚拟按键
Google的官方文档是: https://developer.android.com/training/system-ui/navigation.html#behind 示例代码 1 View de ...
- mysql存储表情字符
windows下是my.inilinux下是my.cnf 路径是: /etc/my.cnf 参考: https://blog.csdn.net/fhzaitian/article/details/53 ...
- ModelAndView学习笔记
api: 构造函数摘要 ModelAndView() bean样式用法的默认构造函数:填充bean属性,而不是传递构造函数参数. ModelAndView(Object view) ...