关于矩形窗函数DFT和FFT的笔记

2023-11-19

一直想写这个程序,今日终于如尝所愿,非常开心!
矩形窗函数的FT是个什么样子呢?
1、先从理论上分析一下,如图所示(贼简单):在这里插入图片描述
我们在二维坐标系里只能画出信号的幅度谱 |F(w)| ,那么矩形窗的幅度谱是啥形状呢?(本科的时候快把Sa函数的图画烂了):
在这里插入图片描述
这时,我想啊,如果是它的时移信号呢?根据FT的时移性质很容易得到:在这里插入图片描述
但是在画幅度谱时,是要对信号的FT求模滴!所以,幅度谱不会包含时移信息,而是时移信息包含在信号的相位谱中。因此无论时域信号怎么平移,频域的幅度谱时不变的。
到这里就清楚了,只要是矩形窗函数形状的信号,它的FT都是长一样的,都是Sa函数的形状。
2、从实际中分析一下
于是乎,我就写了第一个程序,计算 x(n)=1 (n=0,1,……,N-1),的DFT:

N=16;           % 窗函数长度
x=rectwin(N);   % 产生0到(N-1)的矩形窗函数
n=0:N-1;        % 离散时间变量
X=zeros(1,N);   % 用于储存FT值
subplot(311);stem(n,x,'.'),grid on
xlabel('n'),ylabel('x(n)'),title('原始信号');

for k=0:N-1 % 计算DFT
   for n=0:N-1	 % MATLAB的下表索引从1开始,所以为了得到正确的结果要进行处理
      X(k+1)=X(k+1)+x(n+1)*exp(-1i*2*pi*n*k/N);
   end
end
k=0:N-1;
subplot(312),stem(k,abs(X),'.');grid on
xlabel('k'),ylabel('X(k)'),title('DFT');

y=fft(x,N); % 计算FFT,验证上面的DFT算法
subplot(313);stem(k,abs(y),'.');grid on
xlabel('k');ylabel('X(k)');title('FFT');

结果如下:在这里插入图片描述
我在这里遇到了一个很大的,为什么只有在零点的值是对的,说好的Sa函数呢?FFT和DFT计算结果是一样的,说明我的程序没错啊,但是结果为什么不对?我又手算了一下,结果是一样的,通过欧拉公式很容易证明下面的结论:在这里插入图片描述
这时,我想到了一个问题,FFT或者DFT认为,在没有信号的位置是信号的周期延拓,这样频域的信号才能被离散化,才能用计算机表示。所以在上述程序中,是信号 x(n) 的定义出现了问题。不光需要定义值为1的位置,还需要定义值为0的位置,不然经过周期延拓后,上述程序实际求的是常数1的DFT,当然是一个只有在零点有值的频谱。
3、正确的程序
于是我又写了第二个程序:

fs=1;   	  % Sampling Frequency
ts=1/fs;   	 % Sampling Time
N=16;    	  % Sampling points
L=N*ts;    	 % Length of Signal
t=(0:N-1)*ts;   % Time Vector
t0=0; t1=10;    % t1-t0 为脉宽
X=zeros(1,N);   % 用于储存FT值

ut1=stepfun(t,t0);		% 产生阶跃函数
ut2=stepfun(t,t1);
x=ut1-ut2; 		% 产生0-9的窗函数
subplot(311);
stem(t,x);grid on
xlabel('n'),ylabel('x(n)'),title('原始信号');

for k=0:N-1 		% 计算DFT
   for n=0:N-1  		% MATLAB的下表索引从1开始,所以为了得到正确的结果要进行处理
      X(k+1)=X(k+1)+x(n+1)*exp(-1i*2*pi*n*k/N);
   end
end
k=0:N-1;
subplot(312),stem(k,abs(X),'.');grid on
xlabel('k'),ylabel('X(k)'),title('DFT');

Uw=fft(x,N);
subplot(313);
stem(k,abs(Uw));grid on
xlabel('k');ylabel('X(k)');title('FFT');

结果如下:在这里插入图片描述
可能画成连续的更好看一些:在这里插入图片描述
终于写完了,结果与想象中的差不多,但是这波长得也忒难看了,为此我增加了采样点数,这样就好看多了。
在这里插入图片描述
4、顺便瞧一瞧脉宽对频谱的影响
a、采样点数N=256,脉宽为10,结果如下:
在这里插入图片描述
b、脉宽为50,结果如下:
在这里插入图片描述
c、脉宽为1,其实就成了冲激函数的DFT,结果如下:在这里插入图片描述
可见,脉宽影响频谱能量的集中程度,脉宽越大,频谱越集中,极限是常函数的频谱,是在零点的一个冲激;脉宽越小,频谱越分散,极限是冲激函数的频谱,是一个白色频谱。
至此,理论与实际结果全部吻合,高兴高兴!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于矩形窗函数DFT和FFT的笔记 的相关文章

  • 比较元胞数组中的字符串

    我试图在单词列表中找到最常见的单词 到目前为止 这是我的代码 uniWords unique lower words for i 1 length words for j 1 length uniWords if uniWords j lo
  • 在 Matlab 2014b 中移动等高线图的 z 值

    我正在尝试绘制曲面图 在曲面下方我希望显示轮廓线 但我希望轮廓位于z 1而不是默认值0 我找到了之前关于这个问题的帖子here https stackoverflow com questions 8054966 matlab how to
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • MATLAB 链表

    有哪些可能的方法来实现链表MATLAB http en wikipedia org wiki MATLAB 注意 我问这个问题是为了教学价值 而不是实用价值 我意识到 如果您实际上在 MATLAB 中滚动自己的链表 那么您可能做错了什么 然
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • MATLAB 是否已有 YAML 库/解析器?

    我想使用 YAML 跨多种语言交流一些数据 将其视为 与语言无关的序列化 其中一种语言是 MATLAB 但我似乎找不到该语言的 YAML 库 我在 Google 上检查了 matlab yaml 和 matlab yaml parse 似乎
  • 如何建立数据流挖掘的滑动窗口模型?

    我们遇到的情况是 流 来自传感器的数据或服务器上的点击流数据 采用滑动窗口算法 我们必须将最后 例如 500 个数据样本存储在内存中 然后 这些样本用于创建直方图 聚合并捕获有关输入数据流中异常的信息 请告诉我如何制作这样的滑动窗 如果您询
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 在 Matlab 中快速加载大块二进制文件

    我有一些相当大的 int16 格式的数据文件 256 个通道 大约 75 1 亿个样本 每个文件约 40 50 GB 左右 它以平面二进制格式编写 因此结构类似于 CH1S1 CH2S1 CH3S1 CH256S1 CH1S2 CH2S2
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 定义自定义 Mupad 程序的一般相对搜索路径

    假设我有一个 mupad 笔记本myMupadNotebook mn在路径上 C projectFolder ABC abc 它调用程序MyMupadProcedure mu它位于 C DEF GHI 现在我有一个 Matlab 脚本mai
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些

随机推荐

  • 内存数据库-3-[redis]的架构原理和部署模式

    参考redis三种模式对比 Redis 是一个开源的 key value 存储系统 由于出众的性能 大部分互联网企业都用来做服务器端缓存 1 单实例模式 问题 1 内存容量有限 2 处理能力有限 3 无法高可用 Redis 在3 0版本前只
  • 我的股票项目环境配置过程记录(含python打包方法linux windows)

    股票项目从源码配置环境 V1 0 Windows 如果只是跑只需要这两个 pip3 install PyQt5 i https pypi douban com simple pip install U matplotlib pip inst
  • 直流-直流(DC-DC)变换电路

    直流 直流 DC DC 变换电路 可以将一种直流电源经过变换电路后输出另一种具有不同输出特性的直流电源 可以是一种固定电压或可调电压的直流电 按照电路拓扑结构的不同 DC DC变换电路可以分成两种形式 不带隔离变压器的DC DC变换电路和带
  • Tomcat7安装及配置教程

    Apache Tomcat7 0安装及配置教程 Apache Tomcat7 0官方网站链接 http tomcat apache org apache tomcat 7 0 73 windows x64 先解压下载的压缩包 然后在bin目
  • 使用express封装一个简单的http代理服务器以及手动设置Access-Control-Allow-Origin解决跨域问题

    一 跨域是什么 先来了解一下什么是跨域 才能知道如何解决跨域问题 跨域 出于浏览器的同源策略限制 使浏览器不能执行其他网站的脚本 同源策略是浏览器对 javascript 施加的安全限制 所谓同源就是指在同一个域内 就是两个地址具有相同的协
  • 自学Java的知识盲点(面向对象编程)

    目录 1 类和对象 1 1对象 属性 行为 1 1 1属性 成员变量 1 2类和对象的内存分配机制 1 3构造方法 1 3 1this关键字 1 4访问修饰符 2 封装 2 1定义 3 继承 ctrl h可以看继承关系 3 1基本介绍 本质
  • VS2019配置QT及打开项目报错处理

    放在一起是因为配置的拖了比较久 于是就放一起 以后要是遇到了 能够处理 也希望对遇到同样问题的能有所参考 对于下载安装qt的教程就不写了 因为已经好些优秀的文章了 这里把一位博主的地址放一下 可以看看qt下载 里面分享了下载的国内镜像地址
  • STM32CubeMAX:H库函数整理笔记

    GPIO HAL GPIO TogglePin GPIO TypeDef GPIOx uint16 t GPIO Pin 功能 用于切换指定的GPIO引脚 HAL GPIO EXTI Callback uint16 t GPIO Pin 功
  • Windows应急响应-入侵排查

    Windows应急响应 入侵排查 1检测系统账户安全 查看服务器有没有可疑账户新增账户 Win R lusrmgr msc 看有没有新增加用户 查看服务器有没有隐藏用户克隆账户 第一步 Win R打开运行窗口 输入regedit打开注册表编
  • cehp 维护(二)常见告警维护

    零 修订记录 序号 修订时间 修订内容 1 2021 11 18 新增 一 摘要 笨猪主要介绍ceph常见告警及维护方法或过程中遇到的问题 二 环境信息 2 1 ceph版本 cephadmin proceph01 ceph v ceph
  • 为什么不发展三进制计算机,三进制计算机

    三进制计算机 是以三进法数字系统为基础而发展的计算机 三进制逻辑相比较现今的计算机使用二进制数字系统更接近人类大脑的思维方式 二进制计算规则非常简单但并不能完全表达人类想法 在一般情况下 命题不一定为真或假 还可能为未知 在三进制逻辑学中
  • 折半查找算法 ,又称二分查找。(C语言)

    分析 此题目的是找到k 7的数 k的值可随便更改 如果数组中没有k对应的值 则找不到这个数字 并且输出查找次数 代码 include
  • Django 项目部署

    Django 项目部署 1 概述 将开发完成的 Django 项目部署到指定的服务器上 而服务器的系统基本都是 linux Django 项目当前最主要的部署方式是 Python Django Nginx uWSGI python 是 py
  • 一键换衣,任何图片局部一键AI修改,超强“魔法棒”!

    今天分享一个咱们的AI绘画工具的一个强大功能 它能够针对图片的任意局部进行一键AI修改 炒鸡强大 下面是花了几分钟修改的一张图片 原图 修改后 看出区别没有 头发颜色 裤子 项链 背景画面都发生了改变 下面就来揭秘咱是怎么操作的 首先打开软
  • Ceph 4 slow ops, oldest one blocked for 638 sec, mon.cephnode01 has slow ops

    因为实验用的是虚拟机的关系 晚上一般会挂起 第二天早上都能看到 4 slow ops oldest one blocked for 638 sec mon cephnode01 has slow ops的报错 虽然不影响使用 但看着有点难受
  • 【100%通过率 】【华为OD机试c++\python】组合出合法最小数【2023 Q1 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给一个数组 数组里面都是代表非负整数的字符串 将数组里所有的数值排列组合拼接起来组成一个数字 输出拼接成的最小的数字 输入描述 一个数组 数组不
  • oracle函数与触发器

    1 无参函数 CREATE OR REPLACE FUNCTION func1 RETURN VARCHAR2 IS BEGIN RETURN 欢迎你 USER 现在是 to char SYSDATE yyyy mm dd END func
  • 笔记总结备份

    目录 文章目录 目录 前言 版本控制 常用git 命令 操作系统 系统 机器数 时间管理 早期的 Linux 时间系统 中断 内存管理 内存分区 malloc申请一块内存的背后原理 RTOS 系统栈和协议栈 寄存器 磁盘调度算法 虚拟内存
  • python 把数据写到tet_Crawlab准备之python+scrapy环境搭建

    上篇 分布式爬虫管理平台Crawlab开发搭建 把爬虫的管理后台搭建起来了 捣鼓一番发现要真正爬取数据还有下不少的功夫 这篇看看怎么搭建python scrapy环境 0x01 安装Python3 下载python安装包 具体版本根据自己的
  • 关于矩形窗函数DFT和FFT的笔记

    一直想写这个程序 今日终于如尝所愿 非常开心 矩形窗函数的FT是个什么样子呢 1 先从理论上分析一下 如图所示 贼简单 我们在二维坐标系里只能画出信号的幅度谱 F w 那么矩形窗的幅度谱是啥形状呢 本科的时候快把Sa函数的图画烂了 这时 我