在实际的DFT中,如果需要增加采样的密度。这里的采样是频域的采样。可以等到更加密集的谱。

如对于信号 x = [1, 1, 1, 1]做DFT如下图:

不零后的DFT, N = 8, N= 16, N= 32

结论:补零就是将原序列后增加0,使原序列增长。使DFT有更高密度的谱,但是没有给出一个更高分辨率的谱。因为没有任何新的信息附加到这个信号上,而仅仅是在数据添加额外的0, 为了要得到更高的分辨率的谱就必须获得更多的有效数。

为了证明结论:

xn = cos(0.48pi * n) + cos(0.52pi * n), 在n = [0: 10]加90个零的频谱,和直接n= [0:100]的频谱比较。在没有做DFT前,可以知道xn的频谱是两个脉冲。且脉冲的位置在0.48pi和0.52pi。

%corn 2014.11.13

clear; clc;

N = 10;
n = 0 : N;

x = cos(0.48 * pi * n) + cos(0.52 * pi * n);

k = 0 : N;
Wn = exp(-j* 2* pi / N);
nk = n' * k;
Wnnk = Wn .^ nk;

Xk = x * Wnnk;
magxk = abs(Xk);
subplot(3,1,1);
stem(n, magxk);
title('N = 10');

N = 100;
n = 0 : 100;

x = cos(0.48 * pi * n) + cos(0.52 * pi * n);

k = 0 : N;
Wn = exp(-j* 2* pi / N);
nk = n' * k;
Wnnk = Wn .^ nk;
x= [ x(1:1:11) zeros(1,90)]; %add 90 of 0
Xk = x * Wnnk;
magxk = abs(Xk);
subplot(3,1,2);
stem(n, magxk);
title('N = 10 and add 90 of 0');

x = cos(0.48 * pi * n) + cos(0.52 * pi * n);
Xk = x * Wnnk;
magxk = abs(Xk);
subplot(3,1,3);
plot(n, magxk);
title('N = 100');

可以明显的看出:在N=10,时和N= 100时的DFT是有明显差异的,这表明:N=10即频域的采样分辨率是2*pi/ 10 比 N = 100, 2*pi/ 100 有更多的混叠。而增加0只是增加了密度使之更平滑。如下图使用plot的频谱图。

比如最后在N = 100时再增加100个零它们的效果如下:

到此就可以知道:在原序列后加0,并没有得到更多的谱的信息,而是使相应的谱更加平滑。

DFT的补0运算的更多相关文章

  1. 为什么FFT时域补0后,经FFT变换就是频域进行内插?

    应该这样来理解这个问题: 补0后的DFT(FFT是DFT的快速算法),实际上公式并没变,变化的只是频域项(如:补0前FFT计算得到的是m*2*pi/M处的频域值, 而补0后得到的是n*2*pi/N处的 ...

  2. 在js中做数字字符串补0

    转自(http://blog.csdn.net/aimingoo/article/details/4492592) 通常遇到的一个问题是日期的“1976-02-03 HH:mm:ss”这种格式 ,我的 ...

  3. 关于用sql语句实现一串数字位数不足在左侧补0的技巧

    在日常使用sql做查询插入操作时,我们通常会用到用sql查询一串编号,这串编号由数字组成.为了统一美观,我们记录编号时,统一指定位数,不足的位数我们在其左侧补0.如编号66,我们指定位数为5,则保存数 ...

  4. 在SQL中 给字符串补0方法

    --第一种方法SELECT RIGHT('00000'+CAST(ID AS nvarchar(50)),5) FROM dbo.TableName --左边补0,如 00001,00039 SELE ...

  5. java 保留字符串数字的位数,不够前面补0

    @Test public void test() { this.printToConsole(autoGenericCode("10011")); this.printToCons ...

  6. golang 前置补0

    package main import ( "fmt" ) func main() { a := 1 fmt.Println(a) //前置补0 fmt.Printf(" ...

  7. input内强制保留小数点后两位 位数不足时自动补0

    input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...

  8. Java String字符串补0或空格

    package cn.com.songjy; import java.text.NumberFormat; //Java 中给数字左边补0 public class NumberFormatTest  ...

  9. ORACLE SQL前端补0的三种方式。

    前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00 ...

随机推荐

  1. 深入理解Lambda

    概述 Lambda是一个表达式,也可以说它是一个匿名函数.然而在使用它或是阅读Lambda代码的时候,却显得并不那么容易.因为它匿名,因为它删减了一些必要的说明信息(比如方法名).下面就来说说Lamb ...

  2. Appium移动自动化测试(三)--自动化测试demo

    使用java语言编写并实现自动化测试实例 前面我已经搭建好了appium所需要的环境,本文我以系统自带的计算器app为测试对象,进行学习. 一.将测试机与PC连接 本人使用的是Android模拟器,测 ...

  3. 三十五 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点

    1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题

  4. 【zzulioj-2115】乘积最大(区间dp)

    题目描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...

  5. TCPL学习笔记:4-12以及4-13。关于使用递归的问题。

    4-12.写一个函数itoa,通过递归调用将整数转换成为字符串. #include <stdio.h> #include <stdlib.h> void Itoa(int nu ...

  6. git修改远端服务器地址

    方法有三种: 1.修改命令 git remote set-url origin [url] 2.先删后加 git remote rm origingit remote add origin [url] ...

  7. react : code splitting

    1.webpack config output: { ... chunkFilename: 'js/[name].min.js' ... } optimization: { splitChunks: ...

  8. Android event logcat的研究

    经常有这样的需求:在程序A启动之后,在这个程序上覆盖一个界面,让用户输入密码后才能启动程序A,这类场景主要集中在安全软件中. 那应该怎样得知某某程序启动了,系统没有相应的广播,这很难知道程序启动了. ...

  9. Windows上包管理器之Chocolatey初体验

    一直使用Windows开发项目,前段时间使用了一段时间的macOS,感觉使用homebrew和npm去安装一些常用的包真的是方便啊,最近又使用回Windows,由于电脑比较新,发现里面连Git都没有, ...

  10. AlexNet神经网络结构

    Alexnet是2014年Imagenet竞赛的冠军模型,准确率达到了57.1%, top-5识别率达到80.2%. AlexNet包含5个卷积层和3个全连接层,模型示意图: 精简版结构: conv1 ...