上篇博文分析了同一有限长序列在不同的N下的DFT之间的不同: MATLAB 】使用 MATLAB 作图讨论有限长序列的 N 点 DFT(强烈推荐)(含MATLAB脚本)

那篇博文中,我们通过补零的方式来增加N,这样最后的结论是随着N的不断增大,我们只会得到DTFT上的更多的采样点,也就是说频率采样率增加了。通过补零,得到高密度谱(DFT),但不能得到高分辨率谱,因为补零并没有任何新的信息附加到这个信号上,要想得到高分辨率谱,我们就得通过获得更多的数据来进行求解DFT。

这篇博文就是为此而写。

案例:

想要基于有限样本数来确定他的频谱。

下面我们分如下几种情况来分别讨论:

a. 求出并画出  ,N = 10 的DFT以及DTFT;

b. 对上一问的x(n)通过补零的方式获得区间[0,99]上的x(n),画出 N = 100点的DFT,并画出DTFT作为对比;

c.求出并画出  ,N = 100 的DFT以及DTFT;

d.对c问中的x(n)补零到N = 500,画出 N = 500点的DFT,并画出DTFT作为对比;

e. 比较c和d这两个序列的序列的DFT以及DTFT的异同。


那就干呗!

题解:

a.

clc;clear;close all;n = 0:99;
x = cos(0.48*pi*n) + cos(0.52*pi*n);n1 = 0:9;
y1 = x(1:10);subplot(2,1,1)
stem(n1,y1);
title('signal x(n), 0 <= n <= 9');
xlabel('n');ylabel('x(n) over n in [0,9]');
Y1 = dft(y1,10);
magY1 = abs(Y1);
k1 = 0:1:9;
N = 10;
w1 = (2*pi/N)*k1;
subplot(2,1,2);
stem(w1/pi,magY1);
title('DFT of x(n) in [0,9]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = y1*exp(-j*n1'*w);magX = abs(X);
hold on
plot(w/pi,magX);hold off


b.

clc;clear;close all;n = 0:99;
x = cos(0.48*pi*n) + cos(0.52*pi*n);% zero padding into N = 100
n1 = 0:99;
y1 = [x(1:10),zeros(1,90)];subplot(2,1,1)
stem(n1,y1);
title('signal x(n), 0 <= n <= 99');
xlabel('n');ylabel('x(n) over n in [0,99]');
Y1 = dft(y1,100);
magY1 = abs(Y1);
k1 = 0:1:99;
N = 100;
w1 = (2*pi/N)*k1;
subplot(2,1,2);
stem(w1/pi,magY1);
title('DFT of x(n) in [0,9]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = y1*exp(-j*n1'*w);
% w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
% X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
magX = abs(X);
% angX = angle(X)*180/pi;
% figure
% subplot(2,1,1);
hold on
plot(w/pi,magX);
% title('Discrete-time Fourier Transform in Magnitude Part');
% xlabel('w in pi units');ylabel('Magnitude of X');
% subplot(2,1,2);
% plot(w/pi,angX);
% title('Discrete-time Fourier Transform in Phase Part');
% xlabel('w in pi units');ylabel('Phase of X ');
hold off

c.

clc;clear;close all;n = 0:99;
x = cos(0.48*pi*n) + cos(0.52*pi*n);% n1 = 0:99;
% y1 = [x(1:10),zeros(1,90)];subplot(2,1,1)
stem(n,x);
title('signal x(n), 0 <= n <= 99');
xlabel('n');ylabel('x(n) over n in [0,99]');
Xk = dft(x,100);
magXk = abs(Xk);
k1 = 0:1:99;
N = 100;
w1 = (2*pi/N)*k1;
subplot(2,1,2);
stem(w1/pi,magXk);
title('DFT of x(n) in [0,99]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = x*exp(-j*n'*w);
% w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
% X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
magX = abs(X);
% angX = angle(X)*180/pi;
% figure
% subplot(2,1,1);
hold on
plot(w/pi,magX);
% title('Discrete-time Fourier Transform in Magnitude Part');
% xlabel('w in pi units');ylabel('Magnitude of X');
% subplot(2,1,2);
% plot(w/pi,angX);
% title('Discrete-time Fourier Transform in Phase Part');
% xlabel('w in pi units');ylabel('Phase of X ');
hold off

太小了,放大看:

d.

clc;clear;close all;n = 0:99;
x = cos(0.48*pi*n) + cos(0.52*pi*n);% n1 = 0:99;
% y1 = [x(1:10),zeros(1,90)];%zero padding into N = 500
n1 = 0:499;
x1 = [x,zeros(1,400)];subplot(2,1,1)
stem(n1,x1);
title('signal x(n), 0 <= n <= 499');
xlabel('n');ylabel('x(n) over n in [0,499]');
Xk = dft(x1,500);
magXk = abs(Xk);
k1 = 0:1:499;
N = 500;
w1 = (2*pi/N)*k1;
subplot(2,1,2);
% stem(w1/pi,magXk);
stem(w1/pi,magXk);
title('DFT of x(n) in [0,499]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = x1*exp(-j*n1'*w);
% w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
% X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
magX = abs(X);
% angX = angle(X)*180/pi;
% figure
% subplot(2,1,1);
hold on
plot(w/pi,magX,'r');
% title('Discrete-time Fourier Transform in Magnitude Part');
% xlabel('w in pi units');ylabel('Magnitude of X');
% subplot(2,1,2);
% plot(w/pi,angX);
% title('Discrete-time Fourier Transform in Phase Part');
% xlabel('w in pi units');ylabel('Phase of X ');
hold off

e.

clc;clear;close all;n = 0:99;
x = cos(0.48*pi*n) + cos(0.52*pi*n);subplot(2,1,1)
% stem(n,x);
% title('signal x(n), 0 <= n <= 99');
% xlabel('n');ylabel('x(n) over n in [0,99]');
Xk = dft(x,100);
magXk = abs(Xk);
k1 = 0:1:99;
N = 100;
w1 = (2*pi/N)*k1;
stem(w1/pi,magXk);
title('DFT of x(n) in [0,99]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = x*exp(-j*n'*w);
% w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
% X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
magX = abs(X);
% angX = angle(X)*180/pi;
% figure
% subplot(2,1,1);
hold on
plot(w/pi,magX);
% title('Discrete-time Fourier Transform in Magnitude Part');
% xlabel('w in pi units');ylabel('Magnitude of X');
% subplot(2,1,2);
% plot(w/pi,angX);
% title('Discrete-time Fourier Transform in Phase Part');
% xlabel('w in pi units');ylabel('Phase of X ');
hold off% clc;clear;close all;
%
% n = 0:99;
% x = cos(0.48*pi*n) + cos(0.52*pi*n);% n1 = 0:99;
% y1 = [x(1:10),zeros(1,90)];%zero padding into N = 500
n1 = 0:499;
x1 = [x,zeros(1,400)];
subplot(2,1,2);
% subplot(2,1,1)
% stem(n1,x1);
% title('signal x(n), 0 <= n <= 499');
% xlabel('n');ylabel('x(n) over n in [0,499]');
Xk = dft(x1,500);
magXk = abs(Xk);
k1 = 0:1:499;
N = 500;
w1 = (2*pi/N)*k1;stem(w1/pi,magXk);
title('DFT of x(n) in [0,499]');
xlabel('frequency in pi units');%In order to clearly see the relationship between DTFT and DFT, we draw DTFT on the same picture.%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = 2*pi*k/K; %plot DTFT in [0,2pi];
X = x1*exp(-j*n1'*w);
% w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
% X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
magX = abs(X);
% angX = angle(X)*180/pi;
% figure
% subplot(2,1,1);
hold on
plot(w/pi,magX,'r');
% title('Discrete-time Fourier Transform in Magnitude Part');
% xlabel('w in pi units');ylabel('Magnitude of X');
% subplot(2,1,2);
% plot(w/pi,angX);
% title('Discrete-time Fourier Transform in Phase Part');
% xlabel('w in pi units');ylabel('Phase of X ');
hold off

局部放大看:

【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)相关推荐

  1. 【回归预测】基于TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)实现数据多输入单输出回归预测附matlab代码

    1 内容介绍 随着当今时代科技不断地飞速发展,科技信息也在急剧增加,收集并挖掘分析这些来源多样化的科技信息,有助于推动科技的发展.而预测作为一种重要的数据研究方法,在各个行业各个领域都有着广泛的应用. ...

  2. MATLAB应用实战系列(七十六)-【仿真应用】卡尔曼滤波在雷达目标跟踪中的应用仿真(附matlab代码)

    1 模型 目标跟踪问题的应用背景是雷达数据处理,即雷达在搜索到目标并记录目标的位置数据,对测量到的目标位置数据(称为点迹)进行处理,自动形成航迹,并对目标在下一时刻的位置进行预测.本文简要讨论了用Ka ...

  3. MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)

    前言: 本文大体的思路是先对人工鱼进行编码,然后采用人工鱼群算法求解TSP问题中的觅食.聚群.追尾和随机行为对人工鱼群进行更新. 但是亟需需要解决的问题是:对于CVRP问题,如何对人工鱼进行编码.如果 ...

  4. 有时间窗车辆路径问题(VRPTW)解决方案合集,[CW节约算法,TS(硬约束版),TS(惩罚函数版),LNS四种方法对比(附MATLAB代码)]

    前言 本文中构造初始解的方式不采用CW法,而是采用论文里说的构造初始解的方法. 然后在调试的过程中发现,自适应调整惩罚权重的策略效果不好,于是稍微更改了一下自适应调整权重的策略:只在解违反约束时,使权 ...

  5. MATLAB算法实战应用案例精讲-【智能优化算法】强度帕累托进化算法 2 (SPEA2)(附MATLAB代码实现)

    目录 前言 算法原理 算法思想 基于SPEA2的改进算法 原始 K 近邻方法

  6. DFT,DTFT,DFS,FFT之间的关系以及序列补零和插值对频域的影响

    DFT,DTFT,DFS,FFT之间的关系 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连 ...

  7. c语言怎样在不足n位数的整数前补0,C# String 前面不足位数补零的方法

    int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString().PadLef ...

  8. linux echo输出结果赋值给变量,shell变量n位补零

    name=`echo $1|awk '{printf("%04d\n",$0)}'`    将 $1 进行4位数补零,后传递字符串给 name. 将下面代码,命名为 playVid ...

  9. matlab数组补零,fft补零 - 木头弯弯的小窝 - 与非博客 - 与非网

    N 点DFT的频谱分辨率是2π / N.栅栏效应一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率.这是因为x[n] 实际上是x(t) 采样的主值序列,而将x[n]补零 ...

最新文章

  1. 注册和登陆与数据库的链接
  2. MySQL主从复制性能优化
  3. EXCEL在公司管理中的典型应用
  4. Spring Boot登录选项快速指南
  5. 随手小记·080911
  6. 作者:​覃海焕(1978-),女,博士,上海电机学院讲师。
  7. STM32(二)----寄存器讲解
  8. 每天学一点ubuntu指令
  9. Apple任意代码执行漏洞
  10. Python 测试驱动开发读书笔记(一)使用功能测试协助安装Django
  11. 力扣-1557. 可以到达所有点的最少点数目
  12. Opengl1.1绘图之GL_COLOR_LOGIC_OP
  13. win7自带的xps viewer很好用
  14. 12个开放平台大家一起来玩
  15. 如何将图片做成内外边框HTML,如何用html给图片加边框
  16. Callnovo全球联络中心云通讯CRM平台系列(一)
  17. 电脑插了耳机,外放还有声音-解决办法
  18. 在企业中应用的区块链应能够扩容以满足业务条线的需求
  19. deepin系统ll命令不可用解决方法
  20. 传说中的“睡眠算法”的输出分析

热门文章

  1. matlab m 文件例子,一个简单OFDM例子(matlab m文件)
  2. java resultset wasnull_Java Spring – RowMapper ResultSet – 整数/空值
  3. java55矩阵output_leetcode 59 螺旋矩阵2 Java 用时较短-Go语言中文社区
  4. java 注册忘记密码操作_Java实战项目(1):swing图书管理系统的登录,注册,找回密码,增删查,个人解析等...
  5. 5 select 选择的值_表单元素之选择类型
  6. 说一下你对多态的理解?_掌握了多态的特性,写英雄联盟的代码更少啦!
  7. lua mysql insert_Lua MySQL操作
  8. 测量音叉153kHz谐振器的幅频特性
  9. 怎么DIY一个粒子检测器
  10. vue 2个方法先后执行_演讲你早该知道的2个演讲方法