主要内容

FFT.

快速傅里叶变换

描述

例子

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

  • 如果X是一个矢量,然后FFT(x)返回向量的傅里叶变换。

  • 如果X是一个矩阵,然后FFT(x)治疗X作为向量并返回每列的傅立叶变换。

  • 如果X那是一个多维数组FFT(x)沿着第一阵列维度对其大小不等于1作为向量的值并返回每个向量的傅立叶变换。

例子

y= FFT(XN返回N- 点DFT。如果没有指定值,y与尺寸相同X

  • 如果X是矢量和长度X小于N, 然后X用尾随零填充到长度N

  • 如果X是矢量和长度X大于N, 然后X被截断到长度N

  • 如果X是矩阵,然后每列被视为在矢量外壳中。

  • 如果X是一个多维数组,然后将其大小不等于1的第一个阵列维度被视为在矢量外壳中。

例子

y= FFT(XN暗淡沿维度返回傅立叶变换暗淡。例如,如果X是一个矩阵,然后FFT(x,n,2)返回每行的n点傅立叶变换。

例子

全部收缩

使用傅立叶变换来查找埋入噪声信号的信号的频率分量。

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

FS = 1000;% 采样频率t = 1 / fs;%采样期l = 1500;%信号长度t =(0:l-1)* t;%时间向量

形成含有50Hz正弦曲面的信号0.7和振幅1的120Hz正弦曲线。

s = 0.7 * sin(2 * pi * 50 * t)+ sin(2 * pi * 120 * t);

用零平均白噪声损坏信号,方差为4。

x = s + 2 * randn(尺寸(t));

在时域中绘制噪声信号。通过查看信号难以识别频率分量x(t)

绘图(1000 * T(1:50),x(1:50))标题('信号损坏,零平均随机噪声')xlabel('t(毫秒)')ylabel('x(t)'

图包含轴。具有零平均随机噪声损坏的标题信号的轴包含类型线的对象。

计算信号的傅立叶变换。

y = fft(x);

计算双面频谱P2.。然后计算单侧谱P1基于P2.和均衡信号长度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 = fs *(0:(l / 2))/ l;绘制(F,P1)标题('x(t)'的单面幅度谱)xlabel('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)标题('S(t)'的单面幅度谱)xlabel('F(Hz)')ylabel('| P1(F)|'

图包含轴。具有S(T)的标题单面幅度谱的轴包含类型线的对象。

将高斯脉冲从时域转换为频域。

定义信号参数和高斯脉冲,X

FS = 100;% 采样频率t = -0.5:1 / fs:0.5;%时间向量l =长度(t);%信号长度X = 1 /(4 * SQRT(2 * PI * 0.01))*(EXP(-T. ^ 2 /(2 * 0.1))));

在时域中绘制脉冲。

plot(t,x)标题('高斯脉冲在时域')xlabel('时间(t)')ylabel('x(t)'

图包含轴。时域中具有标题高斯脉冲的轴包含类型线的对象。

用来FFT.功能要将信号转换为频域,首先识别新的输入长度,该输入长度是来自原始信号长度的下一个功率。这将填充信号X尾随零以提高性能FFT.

n = 2 ^ nextpow2(l);

将高斯脉冲转换为频域。

y = fft(x,n);

定义频域并绘制唯一频率。

f = fs *(0:(n / 2))/ n;p = abs(y / n)。^ 2;图(f,p(1:n / 2 + 1))标题('频率域的高斯脉冲')xlabel('频率(f)')ylabel('| p(f)| ^ 2'

图包含轴。频域中标题高斯脉冲的轴包含类型线的对象。

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

指定具有1kHz的采样频率的信号的参数,信号持续时间为1秒。

FS = 1000;% 采样频率t = 1 / fs;%采样期l = 1000;%信号长度t =(0:l-1)* t;%时间向量

创建一个矩阵,其中每行代表具有缩放频率的余弦波。结果,X,是一个3×1000矩阵。第一行具有50的波峰,第二行具有150的波峰,并且第三行具有300的波峰。

x1 = cos(2 * pi * 50 * t);%第一行波x2 = cos(2 * pi * 150 * t);%第二行波x3 = cos(2 * pi * 300 * t);%第三行波x = [x1;x2;x3];

从每一行中绘制前100个条目X在一个数字中,按顺序进行比较它们的频率。

为了i = 1:3子图(3,1,i)绘图(t(1:100),x(i,1:100))标题(['排 ',num2str(i),'在时域'])结尾

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

出于算法性能目的,FFT.允许您使用尾随零填充输入。在这种情况下,填充每行X通过零,使得每行的长度是从电流长度的下一个更高的功率。使用该长度定义新的长度nextpow2.功能。

n = 2 ^ nextpow2(l);

指定暗淡使用争论FFT.沿着行X,即,对于每个信号。

昏暗= 2;

计算信号的傅立叶变换。

y = fft(x,n,dim);

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

p2 = abs(y / l);p1 = p2(:,1:n / 2 + 1);P1(:,2:结束-1)= 2 * P1(:,2:结束-1);

在频域中,在单个数字中绘制每行的单面幅度谱。

为了i = 1:3子图(3,1,i)绘图(0:(fs / n):( fs / 2-fs / n),p1(i,1:n / 2))标题(['排 ',num2str(i),'在频域'])结尾

图包含3个轴。频域中标题行1的轴1包含类型线的对象。频域中标题行2的轴2包含类型线的对象。频域中标题行3的轴3包含类型线的对象。

输入参数

全部收缩

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

如果X是一个空的0-by-0矩阵,然后是FFT(x)返回空的0乘法矩阵。

数据类型:双倍的|单身的|INT8.|int16|INT32.|uint8.|uint16|UINT32.|逻辑
复数支持:金宝app是的

变换长度,指定为[]或非负整数标量。指定变换长度的正整数标量可以增加性能FFT.。长度通常被指定为2的功率,或者可以在小型素数的乘积中考虑的功率。如果N低于信号的长度,然后FFT.忽略剩余的信号值过去N输入并返回截断结果。如果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,[],DIM)回报X。什么时候N指定了,FFT(x,n,dim)垫或截短X长度N沿着维度暗淡

数据类型:双倍的|单身的|INT8.|int16|INT32.|uint8.|uint16|UINT32.|逻辑

输出参数

全部收缩

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

如果X是类型单身的, 然后FFT.本身计算单一精度,和y也是类型的单身的。否则,y作为类型返回双倍的

的大小y如下:

  • 为了y = fft(x)要么y = fft(x,[],dim), 的大小y等于大小X

  • 为了y = fft(x,n,dim), 的价值尺寸(y,dim)等于N,虽然所有其他尺寸的大小仍然如此X

如果X那是真的,然后y是缀合物对称的,以及唯一点的数量yCEIL((n + 1)/ 2)

数据类型:双倍的|单身的

更多关于

全部收缩

传染媒介的离散傅里叶变换

y = fft(x)x = ifft(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,实际输入DFT大约需要复杂输入DFT的计算时间。但是,当N有大的主要因素,几乎没有速度差异。

  • 您可以提高速度FFT.使用实用程序功能,FFTW.。该功能控制用于计算特定尺寸和尺寸的FFT的算法的优化。

算法

FFT功能(FFT.FFT2.FFTN.IFFT.IFFT2.IFFTN.)基于名为FFTW的图书馆[1][2]

参考

[1] FFTW(http://www.fftw.org.

[2] Frigo,M.和S. G. Johnson。“FFTW:FFT的自适应软件架构。”声学,演讲和信号处理国际会议的诉讼程序。卷。3,1998,第1381-1384页。

扩展能力

GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

也可以看看

||||

在R2006A之前介绍