离散傅里叶变换

离散傅里叶变换(即 DFT)是数字信号处理的首要工具。该产品的基础是快速傅里叶变换 (FFT),这是一种可减少执行时间的 DFT 计算方法。许多工具箱函数(包括 Z 域频率响应、频谱和倒频谱分析,以及一些滤波器设计和实现函数)都支持 FFT。

MATLAB® 环境提供 fft 和 ifft 函数,分别用于计算离散傅里叶变换及其逆变换。对于输入序列 x 及其变换版本 X(围绕单位圆的等间隔频率的离散时间傅里叶变换),这两个函数实现以下关系

X(k+1)=∑n=0N-1x(n+1)WNkn

x(n+1)=1N∑k=0N-1X(k+1)WN-kn.

在这些方程中,序列下标从 1 而不是 0 开始,因为采用 MATLAB 向量索引方案,并且

WN=e-j2π/N.

注意  MATLAB 约定是对 fft 函数使用负 j。这是工程约定;物理和纯数学通常使用正 j。

使用单个输入参数 x 的 fft 计算输入向量或矩阵的 DFT。如果 x 是向量,fft 计算向量的 DFT;如果 x 是矩形数组,fft 计算每个数组列的 DFT。

例如,创建时间向量和信号:

t = 0:1/100:10-1/100; % Time vector

x = sin(2*pi*15*t) + sin(2*pi*40*t); % Signal

计算信号的 DFT 以及变换后的序列的幅值和相位。通过将小幅值变换值设置为零来减少计算相位时的舍入误差。

y = fft(x); % Compute DFT of x

m = abs(y); % Magnitude

y(m<1e-6) = 0;

p = unwrap(angle(y)); % Phase

要以度为单位绘制幅值和相位,请键入以下命令:

f = (0:length(y)-1)*100/length(y); % Frequency vector

subplot(2,1,1)

plot(f,m)

title('Magnitude')

ax = gca;

ax.XTick = [15 40 60 85];

subplot(2,1,2)

plot(f,p*180/pi)

title('Phase')

ax = gca;

ax.XTick = [15 40 60 85];

fft 的第二个参数指定变换的点数 n,表示 DFT 的长度:

n = 512;

y = fft(x,n);

m = abs(y);

p = unwrap(angle(y));

f = (0:length(y)-1)*100/length(y);

subplot(2,1,1)

plot(f,m)

title('Magnitude')

ax = gca;

ax.XTick = [15 40 60 85];

subplot(2,1,2)

plot(f,p*180/pi)

title('Phase')

ax = gca;

ax.XTick = [15 40 60 85];

在本例中,如果输入序列比 n 短,fft 会用零填充输入序列,如果输入序列比 n 长,则会截断序列。如果未指定 n,则默认为输入序列的长度。fft 的执行时间取决于其执行的 DFT 的长度 n;有关该算法的详细信息,请参阅 fft 参考页。

注意  得到的 FFT 幅值是 A*n/2,其中 A 是原始幅值,n 是 FFT 点数。仅当 FFT 点的数量大于或等于数据样本的数量时,上述情形才成立。如果 FFT 点数小于数据样本数,则 FFT 幅值比原始幅值低上述量。

离散傅里叶逆变换函数 ifft 也接受输入序列以及可选的变换所需点数。尝试以下示例;原始序列 x 和重新构造的序列是相同的(在舍入误差内)。

t = 0:1/255:1;

x = sin(2*pi*120*t);

y = real(ifft(fft(x)));

figure

plot(t,x-y)

该工具箱还包括二维 FFT 及其逆变换的函数,即 fft2 和 ifft2。这些函数对于二维信号或图像处理非常有用。goertzel 函数是计算 DFT 的另一种算法,它也包含在工具箱中。此函数可高效计算长信号中一部分的 DFT。

有时可以方便地重新排列 fft 或 fft2 函数的输出,使零频率分量位于序列的中心。函数 fftshift 将零频率分量移至向量或矩阵的中心。

另请参阅

matlab离散傅立叶变换的应用,离散傅里叶变换 - MATLAB Simulink - MathWorks 中国相关推荐

  1. 理解离散傅立叶变换(一)——傅立叶变换的由来

    理解离散傅立叶变换(一) --傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让 ...

  2. OpenCV 【十七】离散傅立叶变换

    目录 1 key 2 原理 3 实例 3代码 4运行结果 5应用举例 1 key 什么是傅立叶变换及其应用? 如何使用OpenCV提供的傅立叶变换? 相关函数的使用,如: copyMakeBorder ...

  3. OpenCV之core 模块. 核心功能(2)基本绘图 随机数发生器绘制文字 离散傅立叶变换 输入输出XML和YAML文件 与 OpenCV 1 同时使用

    基本绘图 目的 本节你将学到: 如何用 Point 在图像中定义 2D 点 如何以及为何使用 Scalar 用OpenCV的函数 line 绘 直线 用OpenCV的函数 ellipse 绘 椭圆 用 ...

  4. 傅立叶变换系列(四)离散傅立叶变换

    说明: 傅里叶级数.傅里叶变换.离散傅里叶变换.短时傅里叶变换...这些理解和应用都非常难,网上的文章有两个极端:"Esay"  Or  "Boring"!如果 ...

  5. 线性变换+DFT(离散傅立叶变换)+滤波

    线性变换+DFT+滤波 最近又点开了一个关于傅立叶变换的文章,里面通过动画的形式展示了如何将一个时域的输入信号展开成多个正余弦信号的叠加.看起来好像醍醐灌顶,懂了,然后又忘了. 其实,仔细想了想,傅立 ...

  6. 离散傅立叶变换推导(DF、IDFT)

    mazonex离散傅立叶变换视频笔记 需要先了解傅里叶变换推导(FT.IFT) 本文仅作为笔记,推导思想和图片来自视频 周期为2π2\pi2π的函数的复数形式展开(傅里叶级数) 在上一篇文章中part ...

  7. 理解离散傅立叶变换(一)

    理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的 文章,太过抽象,尽是一些让人看了就望而生畏的公式 ...

  8. UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介

    UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介 DFT及其矩阵形式 DFT的性质 上一讲提到对连续波形f(x)f(x)f(x)做周期性采样时可以用采样函数来表示采样结果: fS(x)= ...

  9. 理解离散傅立叶变换(三.复数)

    理解离散傅立叶变换(三) ------复数形式离散傅立叶变换 复数形式的离散傅立叶变换非常巧妙地运用了复数的方法,使得傅立叶变换变换更加自然和简洁,它并不是只是简单地运用替换的方法来运用复数,而是完全 ...

最新文章

  1. TCP/IP模型层次结构
  2. 使用Spring Data Redis操作Redis(集群版)
  3. python 字典 列表 速度_高效使用Python字典的清单
  4. UVA11212Editing aBook 编辑书稿
  5. 20172304 2017-2018-2 《程序设计与数据结构》第六周学习总结
  6. javaone_JavaOne 2016后续活动
  7. VMWare vijava –“用户名或密码不正确”异常的奇怪情况
  8. 微信也许会有重大变化
  9. Centos7安装MariaDB10.28稳定版
  10. 谈一谈手游的运营与推广的那些事儿!
  11. 程序改变世界!1024程序员节,给猿媛们的专属购书福利
  12. 考研计算机软件与理论院校排名,计算机软件与理论专业考研院校排名
  13. 使用计算机解决科学研究,应用计算机科学
  14. Android使用Google Map服务 - 根据GPS信息在地图上定位
  15. 【常见错误 error】Vivado SDK在启动程序时显示cannot stop MicroBlaze.MicroBlaze is held in reset 问题解决办法
  16. 详解转换说明%-3d、%3d、%nd、%*2d、%0nd、%0.1f、%5.1f、%*d等含义
  17. 7-14 电话聊天狂人(25 分)
  18. Angular 5 整合容联云 即时通讯
  19. 无限级分类的原理(递归方法)
  20. 由于管理员设置的策略,该磁盘处于脱机状态解决办法

热门文章

  1. k8s集群监控cadvisor+prometheus+grafana部署
  2. am335x编写裸机程序并在CCS中用Jlink调试
  3. Java常见的十种排序算法之冒泡排序
  4. 蓝桥杯单片机选择器和锁存器
  5. AI创作教程之Stable Diffusion 与Photoshop融合使用(含安装方法)
  6. 10-222 在员工表中查询每年入职的员工人数
  7. ubuntu篇---ubuntu安装mysql教程
  8. 我的世界java手机版怎么调按键_我的世界怎么改移动控制键
  9. 网关、节点性能数据整理
  10. java工作流引擎,roadflow(一个强大的工作流引擎)