文档帮助中心
快速傅里叶变换
Y = fft (X)
Y = fft (X, n)
Y=fft(X,n,dim)
例子
Y=快速傅里叶变换(X)计算离散傅里叶变换(DFT)的X使用快速傅立叶变换(FFT)算法。
Y=快速傅里叶变换(X)
Y
X
如果X是向量吗fft(X)返回向量的傅里叶变换。
fft(X)
如果X那么,这是一个矩阵fft(X)处理列X作为向量,并返回每一列的傅里叶变换。
如果X是一个多维数组,那么fft(X)将数组第一个维度中大小不等于1的值作为向量处理,并返回每个向量的傅里叶变换。
Y=快速傅里叶变换(X,n)返回n分DFT。如果没有指定值,Y和我的一样大X.
Y=快速傅里叶变换(X,n)
n
如果X向量的长度是多少X小于n,然后X用尾随零填充到长度n.
如果X向量的长度是多少X大于n,然后X是否被截断为长度n.
如果X是一个矩阵,则每个列都被视为向量。
如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量。
Y=快速傅里叶变换(X,n,昏暗的)返回沿维数方向的傅里叶变换昏暗的。例如,如果X那么,这是一个矩阵fft(X,n,2)返回每行的n点傅里叶变换。
Y=快速傅里叶变换(X,n,昏暗的)
昏暗的
fft(X,n,2)
全部折叠
用傅里叶变换来找出隐藏在噪声中的信号的频率分量。
指定采样频率为1khz、信号持续时间为1.5秒的信号参数。
Fs = 1000;%采样频率T = 1 / f;%采样周期L = 1500;%信号长度t = t (0: l - 1) *;%时间向量
形成包含振幅为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).
X (t)
情节(1000 * t (1:50) X(1:50))标题(“信号被零平均随机噪声破坏”)包含(‘t(毫秒)) ylabel (“X (t)”)
计算信号的傅里叶变换。
Y = fft (X);
计算双边谱P2.然后计算单侧光谱P1基于P2和偶值信号长度l.
P2
P1
l
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
f = f * (0: (L / 2)) / L;情节(f, P1)标题(“X(t)的单边振幅谱”)包含(“f (Hz)”) ylabel (“| P1 (f) |”)
现在,对原始的,未损坏的信号进行傅里叶变换得到准确的振幅,0.7和1.0。
Y = fft(年代);P2 = abs (Y / L);P1, P2 (1: L / 2 + 1);P1 (2: end-1) = 2 * P1 (2: end-1);情节(f, P1)标题(“S(t)的单边振幅谱”)包含(“f (Hz)”) ylabel (“| P1 (f) |”)
将高斯脉冲从时域转换为频域。
定义信号参数和高斯脉冲,X.
Fs = 100;%采样频率t = -0.5: 1 / Fs: 0.5;%时间向量L=长度(t);%信号长度X = 1 /(4 *√(2 *π* 0.01))* (exp (- t ^ 2 / (2 * 0.01)));
在时域画出脉冲。
情节(t, X)标题(“时域高斯脉冲”)包含(“时间(t)”) ylabel (“X (t)”)
使用快速傅里叶变换函数将信号转换为频域,首先确定一个新的输入长度,该长度是原始信号长度的下一个2次方。这将增强信号X使用尾随零,以提高快速傅里叶变换.
n=2^nextpow2(L);
将高斯脉冲转换到频域。
Y=fft(X,n);
定义频率域并绘制唯一的频率。
f = f * (0: (n / 2)) / n;P = abs (Y / n) ^ 2;情节(f P (1: n / 2 + 1)标题(“频域中的高斯脉冲”)包含(‘频率(f)’) ylabel (“| P(f)^2”)
比较余弦波在时域和频域。
指定采样频率为1kHz、信号持续时间为1秒的信号参数。
Fs = 1000;%采样频率T = 1 / f;%采样周期L=1000;%信号长度t = t (0: l - 1) *;%时间向量
创建一个矩阵,其中每一行代表一个具有比例频率的余弦波。结果,X,是一个3×1000的矩阵。第一行的波频为50,第二行的波频为150,第三行的波频为300。
x1 = cos(2 *π* 50 * t);第一行波x2 = cos(2 *π* 150 * t);%第二排波x3 = cos(2 *π* 300 * t);第三行波X = [x1;x2;x3);
绘制每一行的前100个条目X以单个数字排列并比较它们的频率。
为i = 1:3次要情节(3、1,i)情节(t (1:10 0) X(我,1:10 0))标题([“行”num2str(我),“在时域”])结束
为了提高算法性能,快速傅里叶变换允许您用末尾零填充输入。在本例中,填充每一行X加上0,使得每一行的长度是当前长度的次幂2。属性定义新的长度nextpow2函数。
nextpow2
指定昏暗的要使用的参数快速傅里叶变换沿着成排的X,也就是说,对于每个信号。
dim=2;
Y = fft (X, n,昏暗的);
计算每个信号的双边频谱和单边频谱。
P2=abs(Y/L);P1=P2(:,1:n/2+1);P1(:,2:end-1)=2*P1(:,2:end-1);
在频域中,在单个图形中绘制每行的单边振幅谱。
为i = 1:3次要情节(3、1,i)图(0:(Fs / n): (f / 2 - f / n)、P1(我,1:n / 2)标题([“行”num2str(我),在频域内])结束
输入数组,指定为向量、矩阵或多维数组。
如果X是一个空的0 × 0矩阵吗fft(X)返回一个空的0 × 0矩阵。
数据类型:双重的|单|int8|int16|int32|uint8|uint16|uint32|逻辑复数的支持:金宝app是的
双重的
单
int8
int16
int32
uint8
uint16
uint32
逻辑
[]
转换长度,指定为[]或非负整数标量。为变换长度指定正整数标量可以提高快速傅里叶变换。长度通常指定为2的幂或可分解为小素数乘积的值。如果n小于信号的长度,则快速傅里叶变换的后面的剩余信号值忽略n第Th项并返回截断的结果。如果n是0,然后快速傅里叶变换返回一个空矩阵。
0
例子:n = 2 ^ nextpow2(大小(X, 1))
n = 2 ^ nextpow2(大小(X, 1))
数据类型:双重的|单|int8|int16|int32|uint8|uint16|uint32|逻辑
要操作的维数,指定为正整数标量。如果没有指定值,则默认为大小不等于1的第一个数组维度。
fft (X, [], 1)作用于的列X并返回每一列的傅里叶变换。
fft (X, [], 1)
fft (X, [], 2)沿着行进行运算X并返回每一行的傅里叶变换。
fft (X, [], 2)
如果昏暗的大于ndims (X),然后fft(X,[],dim)返回X.当n是指定的,fft (X, n,昏暗的)填充或截断X长度n沿着维度昏暗的.
ndims (X)
fft(X,[],dim)
fft (X, n,昏暗的)
以向量、矩阵或多维数组的形式返回的频率域表示。
如果X的类型是单,然后快速傅里叶变换本机计算在单一精度,和Y也是类型的单.否则,Y作为类型返回。双重的.
的大小Y如下:
为Y = fft (X)或Y = fft (X,[],昏暗的)的大小Y的大小等于X.
Y = fft (X,[],昏暗的)
为Y=fft(X,n,dim)的价值大小(Y,昏暗的)等于n,而其他所有维度的大小保持不变X.
大小(Y,昏暗的)
如果X是真实的,那么Y是共轭对称的吗Y是装天花板((n + 1) / 2).
装天花板((n + 1) / 2)
数据类型:双重的|单
Y = fft (X)和X =传输线(Y)分别实现傅里叶变换和傅里叶反变换。为X和Y的长度n,这些转换的定义如下:
X =传输线(Y)
Y ( k ) = ∑ j = 1 n X ( j ) W n ( j − 1 ) ( k − 1 ) X ( j ) = 1 n ∑ k = 1 n Y ( k ) W n − ( j − 1 ) ( k − 1 ) ,
在哪里
W n = e ( − 2 π 我 ) / n
是其中之一n根的团结。
的执行时间快速傅里叶变换取决于变换的长度。只有小素数因子的变换长度明显快于素数或大素数因子的变换长度。
对于大多数n,实输入离散傅里叶变换的计算时间大约是复输入离散傅里叶变换的一半。然而,当n有很大的质数因素,有很少或没有速度差。
你可以提高速度快速傅里叶变换使用效用函数,fftw.该函数控制用于计算特定尺寸和尺寸的FFT的算法的优化。
fftw
FFT函数(快速傅里叶变换,fft2,fftn,传输线,ifft2,ifftn)是基于一个名为FFTW的库[1][2].
fft2
fftn
传输线
ifft2
ifftn
[1] FFTW (http://www.fftw.org)
[2] FFTW:FFT的自适应软件架构国际声学、语音和信号处理会议论文集1998年第3卷,第1381-1384页。
使用说明和限制:
有关可变大小数据的限制,请参阅工具箱函数代码生成的可变大小限制(MATLAB编码器).
对于MEX输出,MATLAB®编码器™使用MATLAB用于FFT算法的库。对于独立的C/C++代码,默认情况下,代码生成器生成FFT算法的代码,而不是生成FFT库调用。要生成对特定已安装FFTW库的调用,请提供FFT库回调类。有关FFT库回调类的更多信息,请参阅coder.fftw.StandaloneFFTW3Interface(MATLAB编码器).
coder.fftw.StandaloneFFTW3Interface
为了模拟MATLAB函数模块,仿真软件使用MATLAB用于FFT算法的库。对于C/ c++代码生成,默认情况下,代码生成器为FFT算法生成代码,而不是生成FFT库调用。要生成对特定安装的FFTW库的调用,请提供一个FFT库回调类。有关FFT库回调类的更多信息,请参见coder.fftw.StandaloneFFTW3Interface(MATLAB编码器).
使用代码替换库(CRL),您可以生成在其上运行的优化代码手臂®皮质®-带有Neon扩展的处理器。要生成此优化代码,必须安装嵌入式编码器®金宝appARM Cortex-A处理器支持包(ARM Cortex-A处理器金宝app的嵌入式编码器支持包).生成的代码臂皮质-A使用Ne10库。有关更多信息,请参见Ne10 MATLAB函数支持ARM Cortex-A处理器的条件金宝app(ARM Cortex-A处理器金宝app的嵌入式编码器支持包).
使用代码替换库(CRL),您可以生成在其上运行的优化代码臂皮质- m处理器。要生成此优化代码,必须安装ARM Cortex-M处理器金宝app的嵌入式编码器支持包(ARM Cortex-M处理器金宝app的嵌入式编码器支持包).生成的代码臂皮质-M使用CMSIS库。有关更多信息,请参见支持ARM Cortex-M处理器的MATLAB函数的CMSIS条件金宝app(ARM Cortex-M处理器金宝app的嵌入式编码器支持包).
输出Y是复数,即使所有虚部为零。
有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
对于分布式数组,不使用并行FFT算法,快速傅里叶变换在单个工作人员上收集矢量来执行主要长度的fft。对于大素长矢量fft,可能会导致内存不足错误。
有关更多信息,请参见使用分布式数组运行MATLAB函数(并行计算工具箱).
fft2|fftn|fftshift|fftw|传输线
fftshift
您的系统上存在此示例的修改版本。是否改为打开此版本?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处
得到审判现在