正余弦信号的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时的频谱:

因为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个点的频谱:

因此我们得到重要结论:

为了使得频谱更加精确,即逼近于DTFT的波形,有两种方法。第一种方法是采样长度和DFT长度都增加,如果可能应该尽可能采取这种方法,这种方法能提高实际的分辨率,减少泄漏。第二种方法是增加DFT长度,而采样长度通过补零补到一样的长度。这种方法只能增加视在分辨率,该泄漏的还是泄漏了。

时间: 2024-08-08 09:39:13

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

正余弦信号DFT频谱分析(续)

上一篇讲到实际可以通过补零的方法增加序列长度,使得最后增大N来增加视在分辨率.但是它无法解决频率泄漏的问题.频率泄漏的根本原因在于窗的选择. 由于矩形窗突然截断,频谱旁瓣相对幅度过大,导致泄漏的分量很多.因此和FIR滤波器的思路一样,我们想到了其他窗. 接上次的例子,矩形窗: ts = 0.01; n = 0:24; y = [sin(2*pi*20*n*ts),zeros(1,999)]; xk = abs(fft(y,1024)); stem(xk); 频谱如图: 我们换三角窗:yd = [

利用cordic 算法产生正/余弦波形

引言:本文旨在通过该算法产生正余弦波形(不使用IP核). 一.仿真波形 如上所示,dout_sin 和dout_cos 通过补码形式输出三角函数的值,其中使用dout_vld指示信号的有效性. 二.代码下载 点我下载,然后自己加入到modelsim中就可以仿真了. 信号说明: 如上所示,只要给din_vld 和din即可,din的范围是0 - 359. 三.推荐知识参考 参考资料 四.cordic的个人理解(待续) 原文地址:https://www.cnblogs.com/cofin/p/918

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

先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import QWidget,QApplication,QFrame,QGridLayout,QVBoxLayout class Example(QWidget): def __init__(self): super(Example, self).__init__() self.initUI() self.gene

CORDIC算法计算正余弦

网上有很多关于CORDIC算法的资料,看了之后觉得还是wikipedia讲述的更加清晰,特此总结+转载 http://en.wikipedia.org/wiki/CORDIC 算法思想 CORDIC算法是一种对目标值进行逼近的迭代算法,且迭代次数越多精度越高.迭代过程中仅仅需要除2运算和加减运算,因此特别适合硬件方式实现.在单位圆中,圆上角β点的x坐标和y坐标分别对应β的cos和sin值,因此,求角β的正弦值的CORDICn次迭代过程如下: 1.以(1,0)为初始点,向靠近β的方向旋转arcta

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

以前谈到序列的实际长度可以通过零填充方法加入,使得最终增加N添加表观分辨率. 但它并没有解决泄漏频率的问题. 根本原因在于泄漏窗口选择的频率. 由于矩形窗突然被切断,频谱旁瓣相对幅度过大,造成泄漏分量很.因此,与FIR路一样,我们想到了其它窗. 接上次的样例,矩形窗: ts = 0.01; n = 0:24; y = [sin(2*pi*20*n*ts),zeros(1,999)]; xk = abs(fft(y,1024)); stem(xk); 频谱如图: 我们换三角窗:yd = [y.*t

余弦信号的傅里叶变换分析

1 加窗 对离散周期信号时域加窗会将无限长周期信号截断为有限长,于是在频域上原离散谱就会变为连续谱,由此降低分辨率(原单根谱线展开为窗函数谱的移位,因此分辨率主要受窗函数主瓣宽度影响)并产生泄漏(两个相邻谱线互相影响,因此泄漏主要受主瓣与旁瓣相对幅度的影响). 矩形窗具有最窄的主瓣,但同时有最高的旁瓣. 2 谱采样 加窗序列的DFT给出了加窗序列(记为v[n])的傅里叶变换(记为V(ejω))的等间隔采样.由于采样点未必位于V(ejω)的峰值点,所以DFT峰的幅度不一定等于V(ejω)峰的幅度.

旋转坐标法计算正余弦

A.保持一组 角度对应的函数价值-基础角度 B.将需要计算的角表示成那些基础角度的倍数之和 1. 采用sin cos 的2角和差公式,采用递归方式拆解成基础角度函数进行计算 2. Taylor 的 sin cos 展开式 --不需要A B步骤 3. 旋转角度法

连载9:用余弦信号合成方波信号

matplotlib 绘制正余弦曲线图

1.普通风格 代码 import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 2*np.pi, 50)y1 = np.sin(x)y2 = np.cos(x)xticks=[0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi] plt.figure('赏尔') plt.plot(x, y1, c='g', marker='.', ls='--', label='sin(x)')plt.plot