dsp.FFT

离散傅里叶变换

描述

这个dsp.FFT系统对象™ 使用快速傅里叶变换(FFT)计算输入的离散傅里叶变换(DFT)。根据输入的复杂性以及输出是线性顺序还是位反转顺序,对象使用以下一种或多种快速傅里叶变换(FFT)算法:

  • 双信号算法

  • 半长算法

  • 基2时间抽取(DIT)算法

  • 基2频率抽取(DIF)算法

  • 从FFTW中选择的一种算法[1],[2]

要计算输入的DFT,请执行以下操作:

  1. 创建dsp.FFT对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解有关系统对象如何工作的更多信息,请参见什么是系统对象?(MATLAB)。

创造

描述

英尺=dsp.FFT返回一个快速傅里叶变换对象英尺,计算N-D数组。对于列向量或多维数组快速傅里叶变换对象沿第一维计算DFT。如果输入是行向量,则快速傅里叶变换对象计算一行单样本DFT并发出警告。

实例

英尺=dsp.FFT(名称、值)返回一个快速傅里叶变换对象,并将每个指定属性设置为指定值。将每个属性名称用单引号括起来。未指定的属性具有默认值。

性质

全部展开

除非另有说明,否则属性为不能,这意味着您不能在调用对象后更改其值。对象在调用时锁定,并且释放函数将解锁它们。

如果一个属性是可调,您可以随时更改其值。

有关更改特性值的详细信息,请参见基于系统对象的MATLAB系统设计(MATLAB)。

将用于FFT的实现指定为以下之一:汽车,基2FFTW。当您将此属性设置为基2,FFT长度必须是2的幂。

指定输出通道元素相对于输入元素顺序的顺序。将此属性设置为符合事实的以位反转顺序输出频率索引。默认值为错误的,对应于频率指数的线性顺序。

将此属性设置为符合事实的如果FFT的输出应除以FFT长度。当您希望FFT的输出保持在与其输入相同的振幅范围内时,此选项非常有用。这在处理定点数据类型时特别有用。

此属性的默认值为错误的没有缩放。

指定如何根据需要确定FFT长度汽车所有物。当您将此属性设置为汽车,FFT长度等于输入信号的行数。

FFT长度,指定为大于或等于2的整数。

如果以下任何条件适用,则该属性必须是二的幂:

依赖关系

此属性在设置FFT光源财产所有物.

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64

当FFT长度小于输入长度时,包装输入数据。如果此属性设置为true,则在给定FFT长度小于输入长度的情况下,模长数据包装在FFT操作之前发生。如果此属性设置为false,则在FFT操作之前,将输入数据截断为FFT长度。

不动点性质

指定舍入方法。

将溢出操作指定为使湿透.

将正弦表数据类型指定为与输入相同的字长风俗.

将正弦表定点类型指定为无标度数字类型签名属于汽车.

依赖关系

此属性在设置SineTableDataType财产风俗.

将产品数据类型指定为全精度,与输入相同风俗.

将产品定点类型指定为缩放类型数字类型签名属于汽车.

依赖关系

此属性在设置ProductDataType财产风俗.

将累加器数据类型指定为全精度,与输入相同,与产品相同风俗.

将累加器定点类型指定为缩放类型数字类型签名属于汽车.

依赖关系

此属性在设置累加器数据类型财产风俗.

将输出数据类型指定为以下类型之一:全精度,与输入相同,风俗.

将输出定点类型指定为缩放类型数字类型签名属于汽车.

依赖关系

此属性在设置OutputDataType财产风俗.

用法

描述

实例

Y=英尺(x)计算DFT,Y,输入的x沿着第一维度x.

输入参数

全部展开

时域输入信号,指定为向量、矩阵或N-D数组。

FFT光源属性设置为“自动”,长度为x沿第一个维度必须是2的正整数幂。该长度也是FFT长度。当FFT光源财产是“财产”,在中指定的值FFT长度属性必须是2的正整数幂。

仅当万博1manbetxFFT光源属性设置为“自动”.

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:万博1manbetx

输出参数

全部展开

输入信号的离散傅里叶变换,作为向量、矩阵或N-D数组。什么时候FFT光源属性设置为“自动”,FFT长度与输入信号中的行数相同。当FFT光源属性设置为“财产”,FFT长度通过FFT长度所有物

要支持万博1manbetx具有可变大小数据的两个变换长度的非幂,请设置FFT实施财产“FFTW”.

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:万博1manbetx

目标函数

要使用对象函数,请将系统对象指定为第一个输入参数。例如,释放名为的系统对象的系统资源obj,请使用以下语法:

释放(obj)

全部展开

系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部崩溃

在加性噪声中查找信号的频率分量。

笔记:此示例仅在R2016b或更高版本中运行。如果您使用的是早期版本,请使用等效的例如,myObject(x)变成步骤(myObject,x)。

Fs=800;L=1000;t=(0:L-1)’/Fs;x=sin(2*pi*250*t)+0.75*cos(2*pi*340*t);y=x+.5*randn(尺寸(x));%噪声信号ft=dsp.FFT(“FFTLengthSource”,“财产”,...“FFTLength”,1024); Y=英尺(Y);

绘制单侧振幅谱

图(Fs/2*linspace(0,1512),2*abs(Y(1:512)/1024))标题(“噪声信号y(t)的单边振幅谱”)xlabel(‘频率(Hz)’);伊莱贝尔(| Y(f)|)

计算带噪正弦输入信号的FFT。信号能量存储为FFT系数的幅值平方。确定占信号能量99.99%的FFT系数,并利用这些系数的IFFT重构时域信号。将重构信号与原始信号进行比较。

笔记:如果您使用的是R2016a或早期版本,请将对对象的每个调用替换为等效的调用语法。例如obj(x)变成步骤(obj(x)).

考虑时域信号 x [ N ] ,它是在有限的时间间隔内定义的 0 N N - 1. .信号的能量 x [ N ] 由以下方程式得出:

E N = N = 0 N - 1. | x [ N ] | 2.

FFT系数, X [ K ] ,被视为频域中的信号值。信号的能量 x [ N ] 因此,频域中为FFT系数幅度的平方和:

E N = 1. N K = 0 N - 1. | X [ K ] | 2.

根据帕塞瓦尔定理,信号在时域或频域的总能量是相同的。

E N = N = 0 N - 1. | x [ N ] | 2. = 1. N K = 0 N - 1. | X [ K ] | 2.

初始化

初始化正弦波系统对象生成以44.1 kHz采样且频率为1000 Hz的正弦波。构造一个dsp.FFTdsp.IFFT对象来计算输入信号的FFT和IFFT。

这个“FFTLengthSource”每个变换对象的属性都设置为“自动”。因此,FFT长度被视为输入帧大小。本例中的输入帧大小为1020,不是2的幂,因此选择“FFT实施”“FFTW”.

L=1020;Sineobject=dsp.SineWave(“样品性能框架”L“相位偏移”,10,...“采样器”,44100,“频率”,1000); ft=dsp.FFT(“FFT实施”,“FFTW”);ift=dsp.IFFT(“FFT实施”,“FFTW”,“共轭对称输入”,对);rng(1);

流动

噪声输入信号中的流。计算每帧的FFT,并确定构成信号能量99.99%的系数。对这些系数进行IFFT重构时域信号。

numIter=1000;对于Iter=1:numIter Sinewave1=Sineobject();Input=Sinewave1+0.01*randn(大小(Sinewave1));FFTCoeff=ft(输入);FFTCoeffMagSq=abs(FFTCoeff)。^2;ENERGYFREQ域=(1/L)*总和(FFTCoeffMagSq);[FFTCoeffSorted,ind]=排序((1/L)*FFTCoeffMagSq),1,“下降”);cumfftcoffs=cumsum(fftceffsorded);EnergyPercent=(cumfftcoffs/EnergyFreqDomain)*100;Vec=find(EnergyPercent>99.99);fftceffsmodified=0(L,1);fftceffsmodified(ind(1:Vec(1))=fftceff(ind(1:Vec(1));rescronversignal=ift(fftceffsmodified);终止

99.99%的信号能量可由以下公式给出的FFT系数数表示:Vec(1):

Vec(1)
ans=296

使用这些系数可以有效地重建信号。如果将重建信号的最后一帧与原始时域信号进行比较,您可以看到差异非常小,并且曲线图非常匹配。

最大值(绝对值(输入重构信号))
ans=0.0431
绘图(输入,'*'); 持有在…上;绘图(重建信号),“哦”); 持有;

算法

此对象实现上描述的算法、输入和输出快速傅里叶变换块参考页。对象属性与块参数相对应。

工具书类

[2] Frigo,M.和S.G.Johnson,“FFTW:FFT的自适应软件体系结构,”声学、语音和信号处理国际会议记录,1998年第3卷,第1381-1384页。

扩展能力

另见

物体

2012年推出