主要内容

dsp.fft.

离散傅里叶变换

描述

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

  • 双信号算法

  • 半长算法

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

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

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

要计算输入的DFT:

  1. 创造dsp.fft.对象并设置其属性。

  2. 使用参数调用对象,就像它是一个函数。

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

创建

描述

FT.= dsp.fft.返回A.FFT.目的,FT.,计算DFT的DFTN-D阵列。对于列载体或多维数组,FFT.物体沿第一维计算DFT。如果输入是行矢量,则FFT.对象计算一行单个样本DFT并发出警告。

例子

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

特性

展开全部

除非另有说明,否则属性是不可努力,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定释放功能解锁它们。

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

有关更改属性值的详细信息,请参阅MATLAB使用系统对象的系统设计

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

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

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

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

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

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

如果任何这些条件适用,则此属性必须是两个的权力:

依赖性

此属性在设置时适用FFTLengthSource.财产财产

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

当FFT长度短于输入长度时,包装输入数据。如果此属性设置为TRUE,则在FFT操作之前发生模型长度数据包装,给定FFT长度短于输入长度。如果此属性设置为FALSE,则在FFT操作之前将输入数据截断为FFT长度。

定点属性

指定舍入方法。

指定溢出操作或者饱和

指定SINE表数据类型为与输入相同的单词长度或者风俗

将SINE表定点类型指定为未划算的numerictype.(定点设计师)与A的对象签名汽车

依赖性

此属性在设置时适用sinetabledatatype.财产风俗

指定产品数据类型全面精确与输入相同, 或者风俗

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

依赖性

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

指定累加器数据类型全面精确与输入相同与产品相同, 或者风俗

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

依赖性

此属性在设置时适用AccumulatorDatyp.财产风俗

将输出数据类型指定为一个全面精确与输入相同风俗

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

依赖性

此属性在设置时适用outputDataType.财产风俗

用法

句法

描述

例子

y= ft(X计算DFT,y,输入X沿着第一个维度X

输入参数

展开全部

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

当。。。的时候FFTLengthSource.属性设置为'汽车',长度X沿着第一维必须是两个正整数的功率。这个长度也是FFT长度。当。。。的时候FFTLengthSource.属性是'财产',您指定的值FFTLENG财产必须是两个正整数的力量。

可变尺寸输入信号仅支持时万博1manbetxFFTLengthSource.属性设置为'汽车'

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|FI.
复数支持:万博1manbetx是的

输出参数

展开全部

输入信号的离散傅里叶变换,作为向量,矩阵或返回N-D阵列。什么时候FFTLengthSource.属性设置为'汽车',FFT长度与输入信号中的行数相同。什么时候FFTLengthSource.属性设置为'财产',FFT长度通过FFTLENG财产。

要支持万博1manbetx具有可变大小数据的非动力转换长度,请设置FFTIMPLENTATION.财产'fftw'

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|FI.
复数支持:万博1manbetx是的

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源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(size(x));%噪音信号ft = dsp.fft('fftlengthsource''财产'......'fftlength',1024);y = ft(y);

绘制单面幅度谱

绘图(FS / 2 * LINSPACE(0,1,512),2 * ABS(Y(1:512)/ 1024))标题('噪声信号y(t)'的单面幅度谱)xlabel('频率(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

初始化

初始化A.dsp.sinewave.系统对象以在44.1 kHz采样采样的正弦波,具有1000 Hz的频率。建立A.dsp.fft.dsp.ifft.对象来计算输入信号的FFT和IFFT。

'fftlengthsource'每个转换对象的属性设置为'汽车'。因此,FFT长度被认为是输入帧大小。此示例中的输入帧大小为1020,这不是2的功率,因此选择'fftimplementation'作为'fftw'

l = 1020;sineObject = dsp.sinewave('samplesperframe',l,'阶段OFFSET'10,......'采样率',44100,'频率',1000);ft = dsp.fft('fftimplementation''fftw');ift = dsp.ifft('fftimplementation''fftw''连续~dmmetricinput',真的);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)* FFTCOEFFMAGSQ),1,“下降”);Cumfftcoeffs = Cumsum(FftCoeffsort);EnergyPercent =(Cumfftcoeffs / Energyfreqdomain)* 100;vec =查找(EnergyPercent> 99.99);Fftcoeffsmodified =零(1,1);FFTCOEFFSFODIFIED(IND(1:VEC(1)))= FFTCOEFF(IND(1:VEC(1)));重新推荐= IFT(FFTCOEFFSFODIFIED);结尾

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

VEC(1)
ans = 296.

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

max(abs(输入-remstrsignal))
ans = 0.0431.
绘图(输入,'*');抓住;情节(重新评估,'o');抓住离开;

图包含轴。轴包含2个类型的型号。

算法

该对象实现了描述的算法,输入和输出FFT.块参考页面。对象属性对应于块参数。

参考

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

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

扩展能力

也可以看看

对象

在R2012A介绍