全球视点!FFT是什么意思?FFT的详解
fft
(资料图)
快速傅里叶变换
语法
Y = fft(X)
Y = fft(X,n)
Y = fft(X,n,dim)
说明
示例
Y= fft(X)用快速傅里叶变换 (FFT) 算法计算 X的离散傅里叶变换 (DFT)。
如果 X是向量,则 fft(X)返回该向量的傅里叶变换。
如果 X是矩阵,则 fft(X)将 X的各列视为向量,并返回每列的傅里叶变换。
如果 X是一个多维数组,则 fft(X)将沿大小不等于 1 的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。
示例
Y= fft(X,n)返回 n点 DFT。如果未指定任何值,则 Y的大小与 X相同。
如果 X是向量且 X的长度小于 n,则为 X补上尾零以达到长度 n。
如果 X是向量且 X的长度大于 n,则对 X进行截断以达到长度 n。
如果 X是矩阵,则每列的处理与在向量情况下相同。
如果 X为多维数组,则大小不等于 1 的第一个数组维度的处理与在向量情况下相同。
示例
Y= fft(X,n,dim)返回沿维度 dim的傅里叶变换。例如,如果 X是矩阵,则 fft(X,n,2)返回每行的 n 点傅里叶变换。
示例
全部折叠
噪声信号
Try This Example
使用傅里叶变换求噪声中隐藏的信号的频率分量。
指定信号的参数,采样频率为 1 kHz,信号持续时间为 1.5 秒。
Fs = 1000; % Sampling frequency T = 1/Fs; % Sampling period L = 1500; % Length of signalt = (0:L-1)*T; % Time vector
构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量。
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
用均值为零、方差为 4 的白噪声扰乱该信号。
X = S + 2*randn(size(t));
在时域中绘制噪声信号。通过查看信号 X(t)很难确定频率分量。
plot(1000*t(1:50),X(1:50))title("Signal Corrupted with Zero-Mean Random Noise")xlabel("t (milliseconds)")ylabel("X(t)")
计算信号的傅里叶变换。
Y = fft(X);
计算双侧频谱 P2。然后基于 P2和偶数信号长度 L计算单侧频谱 P1。
P2 = abs(Y/L);P1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);
定义频域 f并绘制单侧幅值频谱 P1。与预期相符,由于增加了噪声,幅值并不精确等于 0.7 和 1。一般情况下,较长的信号会产生更好的频率近似值。
f = Fs*(0:(L/2))/L;plot(f,P1) title("Single-Sided Amplitude Spectrum of X(t)")xlabel("f (Hz)")ylabel("|P1(f)|")
现在,采用原始的、未破坏信号的傅里叶变换并检索精确幅值 0.7 和 1.0。
Y = fft(S);P2 = abs(Y/L);P1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);plot(f,P1) title("Single-Sided Amplitude Spectrum of S(t)")xlabel("f (Hz)")ylabel("|P1(f)|")
高斯脉冲
Try This Example
将高斯脉冲从时域转换为频域。
定义信号参数和高斯脉冲 X。
Fs = 100; % Sampling frequencyt = -0.5:1/Fs:0.5; % Time vector L = length(t); % Signal lengthX = 1/(4*sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.01)));
在时域中绘制脉冲。
plot(t,X)title("Gaussian Pulse in Time Domain")xlabel("Time (t)")ylabel("X(t)")
要使用 fft将信号转换为频域,首先从原始信号长度确定是下一个 2 次幂的新输入长度。这将用尾随零填充信号 X以改善 fft的性能。
n = 2^nextpow2(L);
将高斯脉冲转换为频域。
Y = fft(X,n);
定义频域并绘制唯一频率。
f = Fs*(0:(n/2))/n;P = abs(Y/n);plot(f,P(1:n/2+1)) title("Gaussian Pulse in Frequency Domain")xlabel("Frequency (f)")ylabel("|P(f)|")
余弦波
Try This Example
比较时域和频域中的余弦波。
指定信号的参数,采样频率为 1kHz,信号持续时间为 1 秒。
Fs = 1000; % Sampling frequencyT = 1/Fs; % Sampling periodL = 1000; % Length of signalt = (0:L-1)*T; % Time vector
创建一个矩阵,其中每一行代表一个频率经过缩放的余弦波。结果 X为 3×1000 矩阵。第一行的波频为 50,第二行的波频为 150,第三行的波频为 300。
x1 = cos(2*pi*50*t); % First row wavex2 = cos(2*pi*150*t); % Second row wavex3 = cos(2*pi*300*t); % Third row waveX = [x1; x2; x3];
在单个图窗中按顺序绘制 X的每行的前 100 个条目,并比较其频率。
for i = 1:3 subplot(3,1,i) plot(t(1:100),X(i,1:100)) title(["Row ",num2str(i)," in the Time Domain"])end
出于算法性能的考虑,fft允许您用尾随零填充输入。在这种情况下,用零填充 X的每一行,以使每行的长度为比当前长度大的下一个最小的 2 的次幂值。使用 nextpow2函数定义新长度。
n = 2^nextpow2(L);
指定 dim参数沿 X的行(即对每个信号)使用 fft。
dim = 2;
计算信号的傅里叶变换。
Y = fft(X,n,dim);
计算每个信号的双侧频谱和单侧频谱。
P2 = abs(Y/L);P1 = P2(:,1:n/2+1);P1(:,2:end-1) = 2*P1(:,2:end-1);
在频域内,为单个图窗中的每一行绘制单侧幅值频谱。
for i=1:3 subplot(3,1,i) plot(0:(Fs/n):(Fs/2-Fs/n),P1(i,1:n/2)) title(["Row ",num2str(i)," in the Frequency Domain"])end
输入参数
全部折叠
X- 输入数组 向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
如果 X为 0×0 空矩阵,则 fft(X)返回一个 0×0 空矩阵。
数据类型: double| single| int8| int16| int32| uint8| uint16| uint32| logical复数支持: 是
n- 变换长度[](默认) | 非负整数标量
变换长度,指定为 []或非负整数标量。为变换长度指定正整数标量可以提高 fft的性能。通常,长度指定为 2 的幂或可分解为小质数的乘积的值。如果 n小于信号的长度,则 fft忽略第 n个条目之后的剩余信号值,并返回截断的结果。如果 n为 0,则 fft返回空矩阵。
示例: n = 2^nextpow2(size(X,1))
数据类型: double| single| int8| int16| int32| uint8| uint16| uint32| logical
dim- 沿其运算的维度 正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
fft(X,[],1)沿 X的各列进行运算,并返回每列的傅里叶变换。
fft(X,[],2)沿 X的各行进行运算,并返回每行的傅里叶变换。
如果 dim大于 ndims(X),则 fft(X,[],dim)返回 X。当指定 n时,fft(X,n,dim)将对 X进行填充或截断,以使维度 dim的长度为 n。
数据类型: double| single| int8| int16| int32| uint8| uint16| uint32| logical
输出参数
全部折叠
Y- 频域表示 向量 | 矩阵 | 多维数组
频域表示,以向量、矩阵或多维数组形式返回。
如果 X的类型为 single,则 fft本身以单精度进行计算,Y的类型也是 single。否则,Y以 double类型返回。
Y的大小如下:
对于 Y = fft(X)或 Y = fft(X,[],dim),Y的大小等于 X的大小。
对于 Y = fft(X,n,dim),size(Y,dim)的值等于 n,而所有其他维度的大小保持与在 X中相同。
如果 X为实数,则 Y是共轭对称的,且 Y中特征点的数量为 ceil((n+1)/2)。
数据类型: double| single
详细信息
向量的离散傅里叶变换
Y = fft(X)和 X = ifft(Y)分别实现傅里叶变换和逆傅里叶变换。对于长度 n的 X和 Y,这些变换定义如下:
Y(k)=nj=1X(j) W(j−1)(k−1)nX(j)=1nnk=1Y(k) Wn−(j−1)(k−1),
其中
Wn=e(−2πi)/n
为 n 次单位根之一。
提示
fft的执行时间取决于变换的长度。仅具有小质因数的变换长度的 fft 执行时间明显快于本身是质数或具有较大质因数的变换长度的 fft 执行时间。
对于大多数 n值,实数输入的 DFT 需要的计算时间大致是复数输入的 DFT 计算时间的一半。但是,当 n有较大的质因数时,速度很少有差别或没有差别。
使用工具函数 fftw可能会提高 fft的速度。此函数控制用于计算特殊大小和维度的 FFT 算法优化。
算法
FFT 函数(fft、fft2、fftn、ifft、ifft2、ifftn)基于一个称为 FFTW [1] [2] 的库。
参考
[1] FFTW (http://www.fftw.org)
[2] Frigo, M., and S. G. Johnson. “FFTW: An Adaptive Software Architecture for the FFT.” Proceedings of the International Conference on Acoustics, Speech, and Signal Processing. Vol. 3, 1998, pp. 1381-1384.
另请参阅
fft2| fftn| fftshift| fftw| ifft
主题
傅里叶变换
标签:
相关推荐:
最新新闻:
- 全球百事通!格式化时间是什么?抽象类DateFormat是什么?
- 全球视点!FFT是什么意思?FFT的详解
- 格式化时间是什么?抽象类DateFormat是什么?:当前热文
- 迅雷怎么高速下载?迅雷高速下载方法
- 天天热点!.NET Core是什么?NET Core有哪些用处?
- 打印机共享需要密码怎么办?打印机共享需要密码解决方法
- 梯度(gradient)是什么?梯度的概念
- 如何解决手机浏览器中出现404notfound的问题?手机浏览器404notfound解决方法
- 天天快报!disable怎么运用?disable简单易理解用法
- 电脑无法进入系统怎么办?电脑无法进入系统解决方法
- Internal问题解决流程 Internal server error 500 问题解决思路-动态焦点
- 电脑的显示器屏幕老是闪烁怎么办?电脑的显示器屏幕老是闪烁解决方法
- 如何联系爱奇艺APP中的人工客服?爱奇艺APP人工客服联系步骤
- 宽带的内网和外网什么意思?宽带的内网和外网介绍
- USB2.0怎样提高传输速度?提高传输速度方法
- 摄像头远程监控步骤是什么?手机远程监控摄像头设置方法
- 多普达有哪些型号的手机?多普达最新手机大全详情 天天新视野
- U盘遇到病毒怎么办?U盘遇到病毒解决方法
- 快讯:文章目录是什么?选择排序怎么设置?
- 【天天速看料】Internal问题解决流程 Internal server error 500 问题解决思路
- 使用Icon图标的几种方式是啥?Icon图标怎么使用?
- 信号的基本概念是什么?信号的分类有哪些?
- Excel函数之VLOOKUP()怎么使用?一文搞懂Excel函数之VLOOKUP()使用
- 倒车雷达哪个品牌好?汽车倒车雷达品牌及价格介绍_每日信息
- 美国多灵门锁怎么安装?美国多灵门锁安装步骤?
- 网络的利与弊是什么?网络的利弊分析:环球消息
- lol怎么在游戏里回复好友?lol游戏回复消息设置-环球视点
- 转动惯量是什么意思?转动惯量的含义
- OneNote是什么?OneNote的功能有哪些?
- 每日简讯:磁条读写器多少钱?磁条读写器怎么使用?
- 转动惯量是什么意思?转动惯量的含义 当前聚焦
- 三星N8010如何设置?三星N8010的屏幕锁定图案_快消息
- Modbus通信协议是什么?Modbus通信协议详解
- 世界热文:c语言餐桌游戏有哪些?教会你这十款酒桌游戏让你在朋友圈稳站“C”位!
- 电脑默认网关如何查询?电脑默认网关查询的小技巧
- iPad Air(iPad5)什么时候上市?iPad Air(iPad5)的上市时间-今日快看
- IE浏览器不见了怎么办?IE浏览器不见了解决方法
- 梯度(gradient)是什么?梯度的概念|天天日报
- 今亮点!JSONObject是什么意思?JSONObject详情介绍
- Win7专业版与Win7旗舰版如何区分?Win7专业版与Win7旗舰版区分方法
- 聚焦:工厂模式是什么?工厂模式的详解
- 世界今亮点!UML建模怎么用?UML建模之用例图
- 全球视讯!ThinkBook16p对比联想小新 Pro16 2021款哪个值得更好?详细评测
- Win7系统安装声卡驱动失败怎么办?声卡驱动安装失败解决方法
- mysql置疑原因是什么?数据库置疑的处理办法
- UML建模怎么用?UML建模之用例图:天天百事通
- 百度快照如何彻底删除?百度快照正确的删除方法
- 禁用宏则关闭excel文件怎么弄?设置流程_天天速递
- 英雄联盟无法全屏显示如何解决?英雄联盟无法全屏显示解决方法
- order by是什么意思?order by详解-环球关注
- 宽带的内网和外网什么意思?宽带的内网和外网介绍
- USB2.0怎样提高传输速度?提高传输速度方法
- U盘遇到病毒怎么办?U盘遇到病毒解决方法
- 语义分割:基于openCV和深度学习(二)_环球速看料
- 天天热点!专升本英语重要知识点补充 英语全部知识点详情介绍
- 【世界快播报】CSS:好玩的‘伪类’系列之——(:only-child与:only-of-type) 例子说明
- mysql置疑原因是什么?数据库置疑的处理办法
- 优麒麟社区懒人版本(含软件全家桶) 怎么一键安装?_当前速读
- 禁用宏则关闭excel文件怎么弄?设置流程_天天速递
- java中flypaper怎么使用?Java 基础接口fly_全球快播报
- 每日看点!用VC6.0怎么实现上位机串口通信?位机串口通信的设置方法
- 会议panel是什么意思?医学术语中的panel到底是指什么?
- 观点:颜料墨水和染料墨水的区别是什么?颜料墨水和染料墨水简介
- 天天速递!粘胶短纤维市场现状是什么?粘胶短纤维的未来发展趋势
- 浪漫主义时期的音乐有哪些?浪漫主义乐派是什么?-当前独家
- 世界热文:c语言餐桌游戏有哪些?教会你这十款酒桌游戏让你在朋友圈稳站“C”位!
- Android中LayoutParams是什么?Android中LayoutParams总结和用法
- 今日热门!数据结构试题有哪些?数据结构试题及评分解析
- ssm大学生兼职论坛是什么?大学生兼职有哪些?:每日观察
- 摄氏度和开氏度的换算 开氏度和摄氏度的换算公式 天天亮点
- 基础版本的基础版本 直方图均衡化系列
- 今日视点:怎么设置交换机?计算机交换机连接设置方法
- 天天要闻:图片或手写签名转电子签名怎么转?手写签名转电子签名教程
- 电脑默认网关如何查询?电脑默认网关查询的小技巧
- IE浏览器不见了怎么办?IE浏览器不见了解决方法
- Win7专业版与Win7旗舰版如何区分?Win7专业版与Win7旗舰版区分方法
- Win7系统安装声卡驱动失败怎么办?声卡驱动安装失败解决方法
- 百度快照如何彻底删除?百度快照正确的删除方法
- 英雄联盟无法全屏显示如何解决?英雄联盟无法全屏显示解决方法
- 如何解决IE浏览器网页图片显示红叉问题?IE浏览器网页图片显示红叉解决方法
- Win7系统安装CAD软件提示缺少dfst.dll怎么办?解决方法
- 内网端口映射怎么设置?内网端口映射定义及设置方法
- 美拍是什么?美拍怎么用?
- 怎么关闭微信的扫脸支付功能?微信的扫脸支付功能关闭步骤
- 朴叙俊将加盟《惊奇队长2》 演惊奇队长丈夫|当前头条