主要内容

dsp。FFT

离散傅里叶变换

描述

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

  • 双信号算法

  • 半身的算法

  • 基数2实时抽取(DIT)算法

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

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

要计算输入的DFT:

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

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

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

创建

描述

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

例子

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

属性

全部展开

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

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

有关更改属性值的更多信息,请参见基于系统对象的MATLAB系统设计

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

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

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

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

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

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

如果满足以下条件,这个性质必须是2的幂:

依赖关系

属性设置时将应用此属性FFT光源财产财产

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

当FFT长度小于输入长度时对输入数据进行换行。如果该属性设置为true,则给定FFT长度小于输入长度,则在FFT操作之前进行模长数据包装。如果该属性设置为false,则在FFT操作之前将输入数据截断为FFT长度。

定点属性

指定舍入方法。

将溢出操作指定为饱和

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

将正弦表定点类型指定为无标度numerictype(定点设计师)Signedness汽车

依赖关系

属性设置时将应用此属性SineTableDataType财产自定义

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

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

依赖关系

属性设置时将应用此属性ProductDataType财产自定义

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

将累加器定点类型指定为缩放类型numerictype(定点设计师)Signedness汽车

依赖关系

属性设置时将应用此属性累加器数据类型财产自定义

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

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

依赖关系

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

用法

描述

例子

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

输入参数

全部展开

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

FFT光源属性设置为“汽车”,长度为x在第一维上一定是2的正整数次幂。这个长度也是FFT长度。当FFT光源属性是“属性”,在中指定的值FFTLength性质必须是2的正整数次幂。

仅当金宝appFFT光源属性设置为“汽车”

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

输出参数

全部展开

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

为支持金宝app具有可变大小数据的非双幂变换长度,设置FFT实施财产“FFTW”

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

目标函数

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

释放(obj)

全部展开

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

例子

全部崩溃

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

:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对该函数的每个调用替换为等价的一步语法。例如myObject(x) becomes 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(尺寸(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.1 kHz采样且频率为1000 Hz的正弦波。构造一个dsp。FFTdsp。传输线对象来计算输入信号的FFT和IFFT。

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

L=1020;Sineobject=dsp.SineWave(“样品性能框架”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 sininewave1 = sinineobject ();输入= Sinewave1 + 0.01*randn(size(Sinewave1));FFTCoeff =英尺(输入);FFTCoeffMagSq = abs (FFTCoeff) ^ 2;EnergyFreqDomain = (1 / L) *总和(FFTCoeffMagSq);[FFTCoeffSorted, ind] = sort(((1/L)*FFTCoeffMagSq),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

利用这些系数可以有效地重建信号。如果将重构信号的最后一帧与原始时域信号进行比较,可以看到两者之间的差异非常小,而且两幅图非常吻合。

最大值(绝对值(输入重构信号))
ans=0.0431
情节(输入,‘*’); 持有;情节(ReconstrSignal“o”); 持有

图中包含一个坐标轴。轴线包含2个线型对象。

算法

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

参考文献

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

扩展功能

另见

物体

2012年推出