主要内容

dsp.FFT

离散傅里叶变换

描述

dsp.FFT系统对象™计算离散傅里叶变换(DFT)输入使用快速傅里叶变换(FFT)。对象使用一个或多个以下的快速傅里叶变换(FFT)算法的复杂性取决于输入和输出是否在线性bit-reversed顺序:

  • 着算法

  • 半身的算法

  • Radix-2 decimation-in-time (DIT)算法

  • Radix-2 decimation-in-frequency (DIF)算法

  • FFTW算法选择[1],[2]

要计算DFT的输入:

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

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

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

英国《金融时报》= dsp.FFT返回一个FFT对象计算离散傅里叶变换(DFT)的一个真实的或复杂的N沿着第一个维度- d数组输入使用快速傅里叶变换(FFT)。

例子

英国《金融时报》= dsp.FFT (名称,值)返回一个FFT与每个指定的对象属性设置为指定的值。在单引号附上每个属性的名字。未指定的属性有默认值。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

指定用于FFT的实现汽车,Radix-2,或FFTW。当你设定这个属性Radix-2、FFT长度必须是2的幂。

指定的顺序输出通道元素相对于输入元素的顺序。将此属性设置为真正的输出频率指数bit-reversed顺序。默认值是,对应于频率指标的线性排序。

将此属性设置为真正的如果FFT的输出应该除以FFT长度。这个选项是有用的,当你想要的输出FFT留在相同的振幅范围作为它的输入。这是特别有用的在处理定点数据类型。

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

如何确定FFT长度指定为汽车财产。当你设定这个属性汽车、FFT长度等于输入信号的行数。

FFT长度指定为一个整数大于或等于2。

这个属性必须是2的幂,如果任何这些条件的运用:

依赖关系

这个属性设置时适用FFTLengthSource财产财产

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

将输入数据时FFT长度小于输入长度。如果这个属性被设置为true, modulo-length数据包装前进行FFT运算,由于FFT长度小于输入长度。如果该属性设置为false,截断输入数据的FFT长度前进行FFT运算。

定点属性

指定舍入方法。

指定溢出行动包装饱和

指定正弦表数据类型同一个词长度作为输入自定义

正弦表定点类型指定为一个们numerictype(定点设计师)对象与一个Signedness汽车

依赖关系

这个属性设置时适用SineTableDataType财产自定义

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

指定产品定点类型扩展numerictype(定点设计师)对象与一个Signedness汽车

依赖关系

这个属性设置时适用ProductDataType财产自定义

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

指定蓄电池定点类型扩展numerictype(定点设计师)对象与一个Signedness汽车

依赖关系

这个属性设置时适用AccumulatorDataType财产自定义

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

指定输出定点类型扩展numerictype(定点设计师)对象与一个Signedness汽车

依赖关系

这个属性设置时适用OutputDataType财产自定义

使用

语法

描述

例子

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

输入参数

全部展开

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

FFTLengthSource属性设置为“汽车”的长度,x沿着第一个维度必须是一个正整数的两个。这个长度也FFT长度。当FFTLengthSource属性是“属性”,您所指定的值FFTLength属性必须是一个正整数的两个。

适应输入信号时仅支持金宝appFFTLengthSource属性设置为“汽车”

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

输出参数

全部展开

离散傅里叶变换的输入信号,返回为一个向量,矩阵,或一个N- d数组。当FFTLengthSource属性设置为“汽车”一样,FFT长度是输入信号的行数。当FFTLengthSource属性设置为“属性”通过指定,FFT长度FFTLength财产。

支持n金宝appon-power-of-two转换与适应可变长度数据,设置FFTImplementation财产“FFTW”

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

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

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

例子

全部折叠

找到一个信号的频率成分在加性噪声。

请注意:本例中只运行在R2016b或更高版本。如果您使用的是较早的版本,用等效替换每个调用函数一步语法。例如,myObject (x)变成了一步(myObject x)。

Fs = 800;L = 1000;t = (0: l - 1) / Fs;x =罪(2 *π* 250 * t) + 0.75 * cos(2 *π* 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) ')包含(的频率(赫兹));ylabel (“Y (f) | |”)

图包含一个坐标轴对象。坐标轴对象与标题单面噪声信号的振幅谱y (t)包含一个类型的对象。

计算FFT的嘈杂的正弦输入信号。信号的能量存储为FFT系数的大小广场。确定信号的FFT系数占据99.99%的能源和重构的时域信号通过这些系数的传输线。比较重构信号与原信号。

请注意:如果您使用的是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

初始化

初始化一个dsp.SineWave系统对象生成一个正弦波采样44.1 kHz, 1000赫兹的频率。构造一个dsp.FFTdsp.IFFT对象计算FFT和输入信号的传输线。

“FFTLengthSource”这些改变对象的属性设置“汽车”。FFT长度因此被认为是作为输入帧大小。输入帧尺寸在这个例子中是1020,而不是2的幂,所以选择“FFTImplementation”作为“FFTW”

L = 1020;Sineobject = dsp.SineWave (“SamplesPerFrame”L,“PhaseOffset”10“SampleRate”,44100,“频率”,1000);英国《金融时报》= dsp.FFT (“FFTImplementation”,“FFTW”);界面张力= dsp.IFFT (“FFTImplementation”,“FFTW”,“ConjugateSymmetricInput”,真正的);rng (1);

流媒体

在嘈杂的输入信号流。计算每一帧的FFT和确定系数构成99.99%的能量信号。把这些系数重构的时域信号的传输线。

numIter = 1000;Iter = 1: numIter Sinewave1 = Sineobject ();输入= Sinewave1 + 0.01 * randn(大小(Sinewave1));FFTCoeff =英尺(输入);FFTCoeffMagSq = abs (FFTCoeff) ^ 2;EnergyFreqDomain = (1 / L) *总和(FFTCoeffMagSq);[FFTCoeffSorted,印第安纳州]= (((1 / L) * FFTCoeffMagSq),1,“下”);CumFFTCoeffs = cumsum (FFTCoeffSorted);EnergyPercent = (CumFFTCoeffs / EnergyFreqDomain) * 100;Vec =找到(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

信号重建的有效使用这些系数。如果你把最后一帧的重建信号与原始时域信号,你可以看到不同的是非常小的,情节密切匹配。

马克斯(abs (Input-ReconstrSignal))
ans = 0.0431
情节(输入,‘*’);持有;情节(ReconstrSignal“o”);持有;

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

算法

这个对象实现算法、输入和输出的描述FFT块引用页面。对象属性对应块的参数。

引用

[2]冻结器、m和s g·约翰逊,“FFTW: FFT的适应性软件体系结构,”国际会议声学学报》,演讲,和信号处理3卷,1998年,页1381 - 1384。

扩展功能

版本历史

介绍了R2012a

另请参阅

对象