主要内容

fft

快速傅里叶变换

描述

例子

Y= fft (X)计算离散傅里叶变换(DFT)X使用快速傅里叶变换(FFT)算法。

  • 如果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,昏暗的)返回沿着维傅里叶变换昏暗的。例如,如果X是一个矩阵,然后呢fft (X, n, 2)每行返回n-point的傅里叶变换。

例子

全部折叠

用傅里叶变换找到埋在信号噪声的频率成分。

指定的参数信号1 kHz的采样频率和信号持续时间1.5秒。

Fs = 1000;%采样频率T = 1 / f;%采样周期L = 1500;%长度的信号t = t (0: l - 1) *;%的时间向量

形成一个包含50赫兹的信号正弦信号的振幅0.7和120赫兹正弦信号的振幅1。

S = 0.7 * sin(2 *π* 50 * t) +罪(2 *π* 120 * t);

腐败与零均值白噪声信号的方差4。

X = S + 2 * randn(大小(t));

噪声信号在时域的阴谋。难以识别的频率成分通过查看信号X (t)

情节(1000 * t (1:50) X(1:50))标题(与零均值随机噪声信号损坏的)包含(‘t(毫秒))ylabel (“X (t)”)

图包含一个坐标轴对象。坐标轴对象与标题信号的零均值随机噪声包含一个类型的对象。

计算信号的傅里叶变换。

Y = fft (X);

计算双边频谱P2。然后计算出单面频谱P1基于P2和even-valued信号长度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 * (0: (L / 2)) / L;情节(f, P1)标题(“X (t)的单面振幅谱”)包含(“f (Hz)”)ylabel (“| P1 (f) |”)

图包含一个坐标轴对象。坐标轴对象与标题单面振幅谱的X (t)包含一个类型的对象。

现在,进行傅里叶变换的原始,未堕落的信号和检索的振幅,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)标题(单面的振幅谱年代(t))包含(“f (Hz)”)ylabel (“| P1 (f) |”)

图包含一个坐标轴对象。坐标轴对象与标题单面振幅谱(S (t)包含一个类型的对象。

将高斯脉冲从时域到频域。

定义和高斯脉冲信号参数,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)”)

图包含一个坐标轴对象。坐标轴对象与标题高斯脉冲在时间域包含一个类型的对象。

使用fft将信号转换成频域函数,首先确定一个新的输入长度是下一个2的幂的原始信号长度。这将垫的信号X与落后0为了改善的性能fft

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》)

图包含一个坐标轴对象。坐标轴对象与标题高斯脉冲在频域包含一个类型的对象。

比较余弦波在时域和频域。

指定的参数信号1 khz的采样频率和信号持续时间1秒。

Fs = 1000;%采样频率T = 1 / f;%采样周期L = 1000;%长度的信号t = t (0: l - 1) *;%的时间向量

创建一个矩阵,每一行代表一个余弦波的频率了。结果,X3 -到- 1000矩阵。第一行有一个波的频率,第二行波频率为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(我),在时域的])结束

图包含3轴对象。坐标轴对象1标题行1在时域中包含一个类型的对象。坐标轴对象2标题行2在时域中包含一个类型的对象。坐标轴对象3标题行3在时域中包含一个类型的对象。

算法性能的目的,fft允许你垫与落后的零输入。在这种情况下,垫的每一行X0,这样每一行的长度是上级2从当前长度的力量。定义新的长度使用nextpow2函数。

n = 2 ^ nextpow2 (L);

指定昏暗的参数使用fft的行X,为每一个信号。

昏暗的= 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(我),在频域的])结束

图包含3轴对象。坐标轴对象1标题行1在频域包含一个类型的对象。坐标轴对象2标题行2在频域包含一个类型的对象。坐标轴对象3标题行3在频域包含一个类型的对象。

输入参数

全部折叠

输入数组,指定为一个向量,矩阵,或多维数组。

如果X是一个空0-by-0矩阵,然后呢fft (X)返回一个空0-by-0矩阵。

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑
复数的支持:金宝app是的

变换长度指定为[]或者一个非负整数标量。指定一个正整数的标量变换长度会增加的性能fft。长度通常指定为2的乘方或值,可以分解成小的质数的乘积。如果n小于信号的长度,然后呢fft忽略了其余的信号值过去nth条目并返回截断的结果。如果n0,然后fft返回一个空矩阵。

例子:n = 2 ^ nextpow2(大小(X, 1))

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑

维操作,指定为一个正整数标量。如果没有指定值,默认的是第一个数组维度的大小不等于1。

  • fft (X, [], 1)操作的列X并返回每一列的傅里叶变换。

  • fft (X, [], 2)沿着一排排的运作X并返回每一行的傅里叶变换。

如果昏暗的大于ndims (X),然后fft (X,[],昏暗的)返回X。当n是指定的,fft (X, n,昏暗的)垫或截断X长度n沿着维度昏暗的

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑

输出参数

全部折叠

频域表示返回为一个向量,矩阵,或多维数组。

如果X的类型是,然后fft在单精度本地计算,Y类型的也。否则,Y返回类型

的大小Y如下:

  • Y = fft (X)Y = fft (X,[],昏暗的)的大小Y等于的大小X

  • Y = fft (X, n,昏暗的)的价值,大小(Y,昏暗的)等于n,而所有其他维度的大小仍在X

如果X是真实的,那么Y共轭对称,独特的点的数量吗Y装天花板((n + 1) / 2)

数据类型:|

更多关于

全部折叠

离散傅里叶变换的向量

Y = fft (X)X =传输线(Y)分别实现傅里叶变换和傅里叶反变换。为XY的长度n,这些变换定义如下:

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根的团结。

提示

  • 的执行时间fft取决于变换的长度。变换长度,只有小'因素显著快于那些'或者有大的主要因素。

  • 对于大多数的值n,实质性贡献阶需要大约一半的计算时间复杂的输入阶。然而,当n有大的主要因素,很少或没有速度的差异。

  • 你可以增加的速度fft使用效用函数,fftw。这个函数控制的优化算法用于计算FFT的一个特定的大小和尺寸。

算法

FFT函数(fft,fft2,fftn,传输线,ifft2,ifftn)是基于一个叫做FFTW图书馆[1][2]

引用

[2]冻结器,M。,和S. G. Johnson. “FFTW: An Adaptive Software Architecture for the FFT.”国际会议声学学报》,演讲,和信号处理。3卷,1998年,页1381 - 1384。

扩展功能

GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。

之前介绍过的R2006a