【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)
上篇博文分析了同一有限长序列在不同的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脚本)相关推荐
- 【回归预测】基于TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)实现数据多输入单输出回归预测附matlab代码
1 内容介绍 随着当今时代科技不断地飞速发展,科技信息也在急剧增加,收集并挖掘分析这些来源多样化的科技信息,有助于推动科技的发展.而预测作为一种重要的数据研究方法,在各个行业各个领域都有着广泛的应用. ...
- MATLAB应用实战系列(七十六)-【仿真应用】卡尔曼滤波在雷达目标跟踪中的应用仿真(附matlab代码)
1 模型 目标跟踪问题的应用背景是雷达数据处理,即雷达在搜索到目标并记录目标的位置数据,对测量到的目标位置数据(称为点迹)进行处理,自动形成航迹,并对目标在下一时刻的位置进行预测.本文简要讨论了用Ka ...
- MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)
前言: 本文大体的思路是先对人工鱼进行编码,然后采用人工鱼群算法求解TSP问题中的觅食.聚群.追尾和随机行为对人工鱼群进行更新. 但是亟需需要解决的问题是:对于CVRP问题,如何对人工鱼进行编码.如果 ...
- 有时间窗车辆路径问题(VRPTW)解决方案合集,[CW节约算法,TS(硬约束版),TS(惩罚函数版),LNS四种方法对比(附MATLAB代码)]
前言 本文中构造初始解的方式不采用CW法,而是采用论文里说的构造初始解的方法. 然后在调试的过程中发现,自适应调整惩罚权重的策略效果不好,于是稍微更改了一下自适应调整权重的策略:只在解违反约束时,使权 ...
- MATLAB算法实战应用案例精讲-【智能优化算法】强度帕累托进化算法 2 (SPEA2)(附MATLAB代码实现)
目录 前言 算法原理 算法思想 基于SPEA2的改进算法 原始 K 近邻方法
- DFT,DTFT,DFS,FFT之间的关系以及序列补零和插值对频域的影响
DFT,DTFT,DFS,FFT之间的关系 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连 ...
- c语言怎样在不足n位数的整数前补0,C# String 前面不足位数补零的方法
int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString().PadLef ...
- linux echo输出结果赋值给变量,shell变量n位补零
name=`echo $1|awk '{printf("%04d\n",$0)}'` 将 $1 进行4位数补零,后传递字符串给 name. 将下面代码,命名为 playVid ...
- matlab数组补零,fft补零 - 木头弯弯的小窝 - 与非博客 - 与非网
N 点DFT的频谱分辨率是2π / N.栅栏效应一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率.这是因为x[n] 实际上是x(t) 采样的主值序列,而将x[n]补零 ...
最新文章
- 注册和登陆与数据库的链接
- MySQL主从复制性能优化
- EXCEL在公司管理中的典型应用
- Spring Boot登录选项快速指南
- 随手小记·080911
- 作者:​覃海焕(1978-),女,博士,上海电机学院讲师。
- STM32(二)----寄存器讲解
- 每天学一点ubuntu指令
- Apple任意代码执行漏洞
- Python 测试驱动开发读书笔记(一)使用功能测试协助安装Django
- 力扣-1557. 可以到达所有点的最少点数目
- Opengl1.1绘图之GL_COLOR_LOGIC_OP
- win7自带的xps viewer很好用
- 12个开放平台大家一起来玩
- 如何将图片做成内外边框HTML,如何用html给图片加边框
- Callnovo全球联络中心云通讯CRM平台系列(一)
- 电脑插了耳机,外放还有声音-解决办法
- 在企业中应用的区块链应能够扩容以满足业务条线的需求
- deepin系统ll命令不可用解决方法
- 传说中的“睡眠算法”的输出分析
热门文章
- matlab m 文件例子,一个简单OFDM例子(matlab m文件)
- java resultset wasnull_Java Spring – RowMapper ResultSet – 整数/空值
- java55矩阵output_leetcode 59 螺旋矩阵2 Java 用时较短-Go语言中文社区
- java 注册忘记密码操作_Java实战项目(1):swing图书管理系统的登录,注册,找回密码,增删查,个人解析等...
- 5 select 选择的值_表单元素之选择类型
- 说一下你对多态的理解?_掌握了多态的特性,写英雄联盟的代码更少啦!
- lua mysql insert_Lua MySQL操作
- 测量音叉153kHz谐振器的幅频特性
- 怎么DIY一个粒子检测器
- vue 2个方法先后执行_演讲你早该知道的2个演讲方法