主要内容

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

图包含一个坐标轴对象。坐标轴对象与标题与零均值随机噪声信号损坏,包含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)的振幅谱,包含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) |”)

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

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

指定一个信号的参数44.1 kHz的采样频率和信号持续时间为1毫秒。创建一个高斯脉冲标准差为0.1 ms。

Fs = 44100;%采样频率T = 1 / f;%采样周期t = -0.5: 0.5;%的时间向量L =长度(t);%信号长度X = 1 /(0.4 *√(2 *π))* (exp (- t ^ 2 / (2 * (0.1 * 1 e - 3) ^ 2)));

脉冲在时域的阴谋。

情节(t, X)标题(“高斯脉冲在时间域”)包含(“时间(t)”)ylabel (“X (t)”)轴([1 e - 3 1 e - 3 0 1.1])

的执行时间fft取决于变换的长度。变换长度,只有小'因素导致更快的执行时间比那些大的主要因素。

在这个例子中,信号长度l是44101,这是一个非常大的质数。改进的性能fft确定输入长度,是下一个从原始信号长度2的幂。调用fft输入长度垫脉冲X与落后0指定变换长度。

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 (Hz)”)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的行X,为每一个信号。

昏暗的= 2;

计算信号的傅里叶变换。

Y = fft (X, L,昏暗的);

计算每个的双面谱和单面谱信号。

P2 = abs (Y / L);P1, P2 (: 1: L / 2 + 1);P1 (: 2: end-1) = 2 * P1 (:, 2: end-1);

在频域中,画出单面振幅谱为每一行在一个单一的数字。

i = 1:3次要情节(3、1,i)图(0:(Fs / L): (Fs / 2 - f / L), P1(我,1:L / 2)标题(“行”+ num2str(我)+“在频域”)结束

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

创建一个包含两个正弦信号的频率的信号15赫兹和40 Hz。第一个正弦信号相位的余弦波 - - - - - - π / 4 ,第二个是相位的余弦波 π / 2 。样品在100赫兹的信号。

Fs = 100;t = 0:1 / Fs: 1 - 1 / f;x = cos(2 *π* 15 * t -π/ 4)+ cos(2 *π* 40 * t +π/ 2);

计算信号的傅里叶变换。情节的大小变换作为频率的函数。

y = fft (x);z = fftshift (y);ly =长度(y);f =(以某方式/ 2:ly / 2 - 1) / ly * Fs;茎(f、abs (z))标题(“x (t)的双面振幅谱”)包含(“频率(赫兹)”)ylabel (“y | |”网格)

图包含一个坐标轴对象。标题双面振幅谱的坐标轴对象x (t),包含频率(赫兹),ylabel y | |包含一个干细胞类型的对象。

计算转换的阶段,消除较小变换值。绘制阶段作为频率的函数。

托尔= 1 e-6;z (abs (z) < tol) = 0;θ=角(z);茎(f,θ/ pi)标题(“x (t)的相位谱”)包含(“频率(赫兹)”)ylabel (“阶段/ \π”网格)

图包含一个坐标轴对象。坐标轴对象与标题相x (t)的频谱,包含频率(赫兹),ylabel P h s e /π包含一个类型的对象。

插入一个信号的傅里叶变换和零填充。

指定的参数信号采样频率为80赫兹的信号持续时间0.8秒。

Fs = 80;T = 1 / f;L = 65;t = t (0: l - 1) *;

创建一个2赫兹正弦信号叠加及其高次谐波。信号包含一个2赫兹余弦波,4赫兹余弦波和6赫兹正弦波。

X = 3 * cos(2 *π* 2 * t) + 2 * cos(2 * 4π* * t) +罪(2 *π* 6 * t);

信号在时域的阴谋。

情节(t, X)标题(“时域信号叠加”)包含(“t”(ms))ylabel (“X (t)”)

图包含一个坐标轴对象。坐标轴对象与标题信号在时间域叠加,包含t (ms), ylabel X (t)包含一个类型的对象。

计算信号的傅里叶变换。

Y = fft (X);

计算出单面振幅谱的信号。

f = f * (0: (L - 1) / 2) / L;P2 = abs (Y / L);P1, P2 (1: (L + 1) / 2);P1(2:结束)= 2 * P1(2:结束);

在频域中,单面频谱。因为信号的采样时间相当短,傅里叶变换的频率分辨率不够精确的峰值频率附近4赫兹。

情节(f, P1,“o”)标题(“原始信号的单面谱”)包含(“f (Hz)”)ylabel (“| P1 (f) |”)

图包含一个坐标轴对象。坐标轴对象与标题单面的原始信号,包含f (Hz), ylabel | P1 (f) |包含一个类型的对象。

为了更好地评估峰值频率,你可以增加分析窗口的长度用0填充原始信号。该方法自动插入的傅里叶变换的信号更精确的频率分辨率。

确定一个新的输入长度是下一个2的幂的原始信号长度。垫的信号X与落后的零扩展它的长度。计算的傅里叶变换在信号。

n = 2 ^ nextpow2 (L);Y = fft (X, n);

计算单面的振幅谱的信号。因为信号的长度n从65增加到128,频率分辨率Fs / n0.625赫兹。

f = f * (0: (n / 2)) / n;P2 = abs (Y / L);P1, P2 (1: n / 2 + 1);P1 (2: end-1) = 2 * P1 (2: end-1);

情节的单面频谱的信号。这个新的光谱显示了峰值频率附近2赫兹,4赫兹、6赫兹在0.625赫兹的频率分辨率。

情节(f, P1,“o”)标题(“单面垫的光谱信号”)包含(“f (Hz)”)ylabel (“| P1 (f) |”)

图包含一个坐标轴对象。坐标轴对象标题单面频谱的信号,包含f (Hz), ylabel | P1 (f) |包含一个类型的对象。

输入参数

全部折叠

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

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

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

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

例子: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,[],昏暗的)返回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取决于变换的长度。变换长度,只有小'因素(不大于7)导致更快的执行时间比黄金或大的主要因素。

  • 对于大多数的值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