主要内容

dsp。FFT

离散傅里叶变换

描述

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

  • 双信号算法

  • 半身的算法

  • DIT算法

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

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

计算输入的DFT:

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

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

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

创建

描述

FT.= dsp。FFT返回A.FFT对象,FT.,计算an的DFTN.- d数组。对于列向量或多维数组,FFT对象计算沿第一维的DFT。如果输入是行向量,则FFT对象计算一行单样本dft并发出警告。

例子

FT.= dsp.fft(名称,价值的)返回A.FFT对象,并将每个指定属性设置为指定值。将每个属性名用单引号括起来。未指定的属性具有默认值。

属性

全部展开

除非另有说明,属性是nontunable,这意味着在调用对象之后不能更改它们的值。对象在调用时锁定,而释放函数打开它们。

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

有关更改属性值的更多信息,请参见使用系统对象Matlab中的系统设计

指定用于FFT的实现为一个汽车radix-2,或FFTW.当您将此属性设置为radix-2, FFT长度必须是2的幂。

指定相对于输入元素的顺序输出通道元件的顺序。将此属性设置为真正的以位反序输出频率索引。默认值是错误的,这对应于频率指数的线性排序。

将此属性设置为真正的如果FFT的输出应由FFT长度除以。当您希望FFT的输出保持在与其输入相同的幅度范围内时,此选项非常有用。使用定点数据类型时,这尤其有用。

此属性的默认值为错误的没有扩展。

指定如何确定FFT长度为汽车财产.当您将此属性设置为汽车, FFT长度等于输入信号的行数。

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

如果适用以下任何条件,此属性必须是2的幂:

依赖关系

属性时应用此属性fftlengthsource.财产财产

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

定点属性

指定舍入方法。

指定溢出操作饱和

指定sin表数据类型为与输入相同的单词长度自定义

将正弦表固定点类型指定为未划算的numerictype(定点设计师)与A的对象Signedness汽车

依赖关系

属性时应用此属性sinetableabledattype.财产自定义

指定产品数据类型为完整的精度同样作为输入,或自定义

将产品定点类型指定为缩放类型numerictype(定点设计师)与A的对象Signedness汽车

依赖关系

属性时应用此属性ProductDataType.财产自定义

将累加器数据类型指定为完整的精度同样作为输入与产品相同,或自定义

将累加器固定点类型指定为缩放numerictype(定点设计师)与A的对象Signedness汽车

依赖关系

属性时应用此属性AccumulatorDataType.财产自定义

将输出数据类型指定为完整的精度同样作为输入自定义

将输出定点类型指定为缩放类型numerictype(定点设计师)与A的对象Signedness汽车

依赖关系

属性时应用此属性OutputDataType财产自定义

用法

句法

描述

例子

y=英尺(X的)计算DFT,y,输入的X沿着第一个维度X

输入参数

全部展开

时域输入信号,用矢量、矩阵或N.- d数组。

fftlengthsource.属性设置为“汽车”,长度X沿着第一个维度必须是2的正整数幂。这个长度也是FFT长度。当fftlengthsource.属性是“属性”,您指定的值FFTLength属性必须是2的正整数幂。

可变尺寸输入信号仅支持何时支持万博1manbetxfftlengthsource.属性设置为“汽车”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|FI.
复数支持:万博1manbetx是的

输出参数

全部展开

输入信号的离散傅里叶变换,以向量、矩阵或矩阵的形式返回N.- d数组。当fftlengthsource.属性设置为“汽车”, FFT长度等于输入信号的行数。当fftlengthsource.属性设置为“属性”, FFT长度通过FFTLength财产。

若要在万博1manbetx可变大小的数据中支持非2次幂的转换长度,请设置fftimplementation.财产“FFTW”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|FI.
复数支持:万博1manbetx是的

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用下面的语法:

释放(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重置 使内部状态复位系统对象

例子

全部收缩

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

笔记:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对该函数的每个调用替换为等价的一步语法。例如,myObject(x)变成step(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(size(x));%噪声信号英国《金融时报》= dsp。FFT (“FFTLengthSource”“属性”'fftlength', 1024);Y =英尺(Y);

绘制单侧振幅谱

情节(Fs / 2 * linspace (0, 1512), 2 * abs (Y(1:512) / 1024))标题('噪声信号y(t)'的单面幅度谱)包含('频率(Hz)');ylabel (“Y (f) | |”的)

图包含轴对象。具有噪声信号y(t)的标题单面幅度谱的轴对象包含类型线的对象。

计算一个带噪声的正弦输入信号的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

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

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

初始化

初始化一个dsp。SineWave系统对象生成以44.1kHz采样的正弦波,并且具有1000 Hz的频率。建立A.dsp。FFTdsp。传输线用于计算FFT和输入信号的IFFT的对象。

“FFTLengthSource”属性设置为“汽车”.因此,FFT长度被认为是输入帧大小。此示例中的输入帧大小为1020,这不是2的功率,因此选择“FFTImplementation”作为“FFTW”

l = 1020;sineObject = dsp.sinewave('samplesperframe'L,“PhaseOffset”10“SampleRate”,44100,“频率”, 1000);英国《金融时报》= dsp。FFT (“FFTImplementation”“FFTW”);界面张力= dsp。传输线(“FFTImplementation”“FFTW”“ConjugateSymmetricInput”,真的);RNG(1);

流媒体

流输入有噪声的输入信号。计算每一帧的FFT,确定构成信号99.99%能量的系数。取这些系数的IFFT重构时域信号。

numIter = 1000;为了iter = 1:numiter sinewave1 = sineObject();输入= Sinewave1 + 0.01 * Randn(大小(SineWave1));fftcoeff = ft(输入);fftcoeffmagsq = abs(fftcoeff)。^ 2;Energyfreqdomain =(1 / L)*总和(FFTCOEFFMAGSQ);[Fftcoeffsorted,IND] = SORT(((1 / L)* FFTCOEFFAGSQ),1,“下”);CumFFTCoeffs = cumsum (FFTCoeffSorted);EnergyPercent = (CumFFTCoeffs / EnergyFreqDomain) * 100;Vec = find(EnergyPercent > 99.99);FFTCoeffsModified = 0 (L, 1);FFTCoeffsModified(印第安纳州(1:Vec (1))) = FFTCoeff(印第安纳州(1:Vec (1)));ReconstrSignal = ift (FFTCoeffsModified);结尾

99.99%的信号能量可以由所提供的FFT系数的数量表示VEC(1)

VEC(1)
ans = 296

利用这些系数可以有效地重构信号。如果你将重构信号的最后一帧与原始时域信号进行比较,你会发现差异非常小,且图形非常接近。

max(abs(输入-remstrsignal))
ANS = 0.0431.
情节(输入,‘*’);持有;情节(ReconstrSignal“o”);持有

图包含轴对象。轴对象包含2个类型的物体。

算法

该对象实现了算法、输入和输出FFT块引用页面。对象属性对应于块参数。

参考文献

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

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

扩展功能

也可以看看

对象

介绍了R2012a