当前位置:首页 > 教育综合 > 正文

FFT:如果信号序列长度N=16,求:(1)x3(2)和x2(9)的对偶节点;(2)x2(4)和x

快速傅里叶变换的计算方法

计算离散傅里叶变换的快速方法,有按时间抽取的FFT算法和按频率抽取的FFT算法。前者是将时域信号序列按偶奇分排,后者是将频域信号序列按偶奇分排。它们都借助于的两个特点:一是周期性;二是对称性,这里符号*代表其共轭。这样,便可以把离散傅里叶变换的计算分成若干步进行,计算效率大为提高。
时间抽取算法  令信号序列的长度为N=2,其中M是正整数,可以将时域信号序列x(n)分解成两部分,一是偶数部分x(2n),另一是奇数部分x(2n+1),于是信号序列x(n)的离散傅里叶变换可以用两个N/2抽样点的离散傅里叶变换来表示和计算。考虑到和离散傅里叶变换的周期性,式⑴可以写成
⑶其中(4a)(4b)由此可见,式⑷是两个只含有N/2个点的离散傅里叶变换,G(k)仅包括原信号序列中的偶数点序列,H(k)则仅包括它的奇数点序列。虽然k=0,1,2,…,N-1,但是G(k)和H(k)的周期都是N/2,它们的数值以N/2周期重复。
因为于是由式⑶和式⑷得到(5a)(5b)
因此,一个抽样点数为N 的信号序列x(n)的离散傅里叶变换,可以由两个 N/2抽样点序列的离散傅里叶变换求出。依此类推,这种按时间抽取算法是将输入信号序列分成越来越小的子序列进行离散傅里叶变换计算,最后合成为N点的离散傅里叶变换。
通常用图1中蝶形算法的信号流图来表示式⑸的离散傅里叶变换运算。例如,N=8=2的抽样点的信号序列x(n)的离散傅里叶变换,可用如图2所示的FET算法的信号流图来计算。
① N=2点的离散傅里叶变换的计算全由蝶形运算组成,需要M级运算,每级包括N/2个蝶形运算,总共有 个蝶形运算。所以,总的计算量为次复数乘法运算和N log2N次复数加法运算。
② FFT算法按级迭代进行,计算公式可以写成
⑹N抽样点的输入信号具有N个原始数据x0(n),经第一级运算后,得出新的N个数据x1(n),再经过第二级迭代运算,又得到另外N个数据x2(n),依此类推,直至最后的结果x(k)=xM(k)=X(k)在逐级迭代计算中,每个蝶形运算的输出数据存放在原来存贮输入数据的单元中,实行所谓“即位计算”,这样可以节省大量存放中间数据的寄存器。
③ 蝶形运算中加权系数随迭代级数成倍增加。由图2可以看出系数的变化规律。对于N=8,M=3情况,需进行三级迭代运算。在第一级迭代中,只用到一种加权系数;蝶形运算的跨度间隔等于1。在第二级迭代中,用到两种加权系数即、;蝶形运算的跨度间隔等于2。在第三级迭代中,用到4种不同的加权系数即、、、;蝶形运算的跨度间隔等于4。可见,每级迭代的不同加权系数的数目比前一级迭代增加一倍;跨度间隔也增大一倍。
④ 输入数据序列x(n)需重新排列为x(0)、x⑷、x⑵、x⑹、x⑴、x⑸、x⑶、x⑺,这是按照二进制数的码位倒置所得到的反序数,例如N=8中数“1”的二进制数为“001”,将其码位倒转变为“100”,即为十进制数“4”。
频率抽取算法 按频率抽取的 FFT算法是将频域信号序列X(k)分解为奇偶两部分,但算法仍是由时域信号序列开始逐级运算,同样是把N点分成N/2点计算FFT,可以把直接计算离散傅里叶变换所需的N次乘法缩减到次。
在N=2的情况下,把N点输入序列x(n)分成前后两半

时间序列x1(n)±x2(n)的长度为N/2,于是N点的离散傅里叶变换可以写成
(8a)
(8b)
频率信号序列X(2l)是时间信号序列x1(n)+x2(n)的N/2点离散傅里叶变换,频率信号序列X(2l+1)是时间信号序列【x1(n)-x2(n)】的N/2点离散傅里叶变换,因此,N点离散傅里叶变换的计算,通过两次加(减)法和一次乘法,从原来序列获得两个子序列,所以,频率抽取算法也具有蝶形运算形式。以2为基数的FFT基本蝶形运算公式为

其计算量完全和时间抽取算法一样,即只需次乘法运算和Nlog2N次加(减)法运算。图3 表示N=8=2点的离散傅里叶变换的信号流图。由图可见,它以三级迭代进行即位计算,输入数据是按自然次序存放,使用的系数也是按自然次序,而最后结果则以二进制反序存放。
实际上,频率抽取算法与时间抽取算法的信号流图之间存在着转置关系,如将流图适当变形,可以得出多种几何形状。
除了基2的FFT算法之外,还有基4、基8等高基数的FFT算法以及任意数为基数的FFT算法。

MATLAB中的FFT的采样频率和采样点怎样确定?

在MATLAB中做FFT,首先编写函数,对不同的采样频率和采样点数,计算FFT后的频率序列及其对应的幅值:

function[f amplitude]=yopheeFFT(sampleRate,FFT_points)  

n=0:FFT_points-1;  

t=n/sampleRate;%采样时间序列  

f_All=n*sampleRate/FFT_points;%频率序列 %构造混有噪声的周期信号并采样

signal=2*sin(2*pi*10*t)+1*sin(2*pi*20.25*t)+0.2*randn(size(t));  %对信号进行快速Fourier变换,并求振幅  

amplitude_All=abs(fft(signal,FFT_points))*2/FFT_points;  

f=f_All(1:FFT_points/2);  

amplitude=amplitude_All(1:FFT_points/2);

扩展资料

MATLAB中FFT函数的意义:

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

模拟信号经过ADC采样之后变成数字信号,可对此数字信号做FFT变换。N个采样点经过FFT之后就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次幂。

假设采样频率为Fs,信号频率为F,采样点数为N。则FFT之后结果为N点复数,其中每一个点对应着一个频率点,该点复数的模值为原始信号在该频率值下的幅度特性。

具体为:假设原始信号在某频率点的幅值为A,则该频点对应的FFT点复数的模值为A的N/2倍。而FFT第一点为原始信号的直流分量,其模值为原始信号模值的N倍。对于相位,FFT复数的相位即为原始信号在该频率点处的相位。

MATLAB中的FFT的采样频率和采样点怎样确定

采样频率就是准备进行fft变换的时间序列数据的频率,如数据间隔为0.01s,采样频率就为100Hz,这是确定的;采样点则根据时间序列数据长度确定,fft即快速傅里叶变换,采样点数是2的整数倍,才能实现快速计算,所以如果序列长度为3,采样长度就设为4,数据会自动补0,如果序列长度为63,采样长度可设为64,即最接近的2的整数次幂。

快速傅立叶变换 matlab-fft实现的问题?50分求助!

t=0:2.5e-6:5.0e-3 %时域点 y=2.0e7*sin(2*pi*25000*t) %正弦信号 yf=fft(y)%快速傅立叶变换 magf=abs(yf)*2/2001%幅值 fs=(0:2000)*400000/2001%频率 plot(fs,magf)%绘图 %%%%%%%%你的程序大大的有问题 你求的是正弦信号抽样序列的fft,首先要整周期采样,然后如果想求单边谱的话,fft后要乘以2/N,如果是双边谱的话除以N,另外fft点数最好是以2为基底的,这样才能突出fft的效率,给个典型程序你去自己看: fs=1024; %采样频率 N=1024; %采样点数 t=(0:N-1

信号功率谱怎么计算

用FFT求取信号频谱的实部和虚部,实部的平方价虚部的平方就是功率谱。周期性连续信号x(t)的频谱可表示为离散的非周期序列Xn,它的幅度频谱的功率谱平方│Xn│2所排成的序列,就被称之为该周期信号的“功率谱”。

对信号进行傅里叶变换,取sin部分为实部,cos部分为虚部,直接算实部和虚部的平方和,得到的就是频域功率谱的分布 推荐使用matlab计算,因为一个函数FFT就可以算出来。

信号x(t)的功率谱密度计算方法:

1、先计算x(t)的傅立叶变换:X(jw),

2、取模:|X(jw)|,再平方:|X(jw)|^2,再除以样本长度: |X(jw)|^2/T

3、就得到: x(t)的功率谱密度函数: Gxx(w)= |X(jw)|^2/T

扩展资料:

周期运动在功率谱中对应尖锋,混沌的特征是谱中出现"噪声背景"和宽锋。它是研究系统从分岔走向混沌的重要方法。 在很多实际问题中(尤其是对非线性电路的研究)常常只给出观测到的离散的时间序列X1, X2, X3,Xn,那么如何从这些时间序列中提取前述的四种吸引子(零维不动点、一维极限环、二维环面、奇怪吸引子)的不同状态的信息。

可以运用数学上已经严格证明的结论,即拟合。我们将N个采样值加上周期条件Xn+i=Xi,则自关联函数(即离散卷积)为 然后对Cj完成离散傅氏变换,计算傅氏系数。 Pk说明第k个频率分量对Xi的贡献,这就是功率谱的定义。

参考资料来源:百度百科-功率谱

展开全文阅读