MATLAB中fft的频率轴怎么计算

MATLAB中fft的频率轴怎么计算,第1张

这个问题问得很不清楚,按我的理解可能是这样的:
H是一个向量(通常意义下应该是一串等时间采样的时间序列),设H的采样率为fs,即采样时间为dt = 1/fs,采样点为N,则总时长T = Ndt。对N点序列做FFT得到的频谱,其分布区间为[0, fs),而频谱点的间隔即为df = 1/T。根据Nyquist采样定理,其中只有[0,fs/2)有信息量,剩下一半是共轭对称的。所以这段话有两个重要的信息,采样频率fs决定了可分辨的频率范围是[0,fs/2),而采样的总时长决定了频域分辨率df
举个例子:在电力系统中计算谐波。中国电网频率是50Hz,一个周波就是20ms,假设采样是一周波256个点,即采样率是fs = 25650 = 12800Hz,dt = 1/12800,采样点N = 256个(正好一个周期),则FFT的结果也是256个点,分别对应直流量,基波(50Hz),二次谐波(100Hz),三次谐波(150Hz),直到127次谐波;剩下的129个点是个特殊点,再剩下的127个点是跟1-127次共轭对称的值。
如果我的理解是对的,题主想问的是要把FFT的结果n个点画出来,其横轴应该怎么设置,那答案就是0:1/T : (n-1)/T,而纵轴一般是两个分别画:幅值和相角。

快速傅里叶变换,是计算机算傅里叶变换的常用方法。
 FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的 FFT算法图发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。

FFT(快速傅里叶变换)是一种实现DFT(离散傅里叶变换)的快速算法,是利用复数形式的离散傅里叶变换来计算实数形式的离散傅里叶变换,matlab中的fft()函数是实现该算法的实现。

MATLAB它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

快速傅里叶变换, 即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由JW库利和TW图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

扩展资料:

matlab优势特点:

1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2、具有完备的图形处理功能,实现计算结果和编程的可视化;

3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

参考资料来源:

百度百科-快速傅里叶变换

百度百科-MATLAB

DFT变换则说明对于时间有限的信号(有限长序列),也可以对其进行频域采样,而不丢失任何信息。所以只要时间序列足够长,采样足够密,频域采样也就可较好地反映信号的频谱趋势,所以FFT可以用以进行连续信号的频谱分析。
当然,这里作了几次近似处理:
1)用离散采样信号的傅立叶变换来代替连续信号的频谱,只有在严格满足采样定理的前提下,频谱才不会有畸变,否则只是近似;
2)用有限长序列来代替无限长离散采样信号。 线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等。
以前曾讨论了用圆周卷积计算线性卷积的方法归纳如下:
将长为N2的序列x(n)延长到L,补L-N2个零
将长为N1的序列h(n)延长到L,补L-N1个零
如果L≥N1+N2-1,则圆周卷积与线性卷积相等,此时,可有FFT计算线性卷积,方法如下:
a计算X(k)=FFT[x(n)]
b求H(k)=FFT[h(n)]
c求Y(k)=H(k)Y(k) k=0~L-1
d求y(n)=IFFT[Y(k)] n=0~L-1
可见,只要进行二次FFT,一次IFFT就可完成线性卷积计算。计算表明,L>32时,上述计算线性卷积的方法比直接计算线卷积有明显的优越性,因此,也称上述圆周卷积方法为快速卷积法 信号是实数序列,任何实数都可看成虚部为零的复数,例如,求某实信号y(n)的复谱,可认为是将实信号加上数值为零的虚部变成复信号(x(n)+j0),再用FFT求其离散付里叶变换。这种作法很不经济,因为把实序列变成复序列,存储器要增加一倍,且计算机运行时,即使虚部为零,也要进行涉及虚部的运算,浪费了运算量。合理的解决方法是利用复数据FFT对实数据进行有效计算,下面介绍两种方法。
(1)一个N点FFT同时计算两个N点实序列的DFT
设x1(n),x2(n)是彼此独立的两个N点实序列,且X1(k)=DFT[x1(n)],X2(k)=DFT[x2(n)]
可通过一次FFT运算同时获得X1(k),X2(k)。算法如下:
首先将x1(n),x2(n)分别当作一复序列的实部及虚部,令
x(n)=x1(n)+jx2(n)
通过FFT运算可获得x(n)的DFT值 X(k)=DFT[x1(n)]+jDFT[x2(n)]=X1(k)+jX2(k)
利用离散付里叶变换的共轭对称性
X1(K)=1/2[X(k)+[X(N-k)共轭]]
X2(K)=1/2[X(k)-[X(N-k)共轭]]
有了x(n)的FFT运算结果X(k),由上式即可得到X1(k),X2(k)的值。

tic
>> a=[1,0,5,1,4,5,1,3];
fft(a);
>> toc
Elapsed time is 11066000 seconds
>> tic
>> DFT(a,8);
>> toc
Elapsed time is 28416000 seconds
按这个输就会有上边的答案
其中function DFT(x,N);
n=[0:N-1];
k=n;
Wn=exp(-j2pi/N);
nk=n'k;
Wnnk=Wn^nk;
X=xWnnk;

fft是:快速傅里叶变换。

快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由JW库利和TW图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少。

特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。FFT的基本思想是把原始的N点序列,依次分解成一系列的短序列。充分利用DFT计算式中指数因子 所具有的对称性质和周期性质,进而求出这些短序列相应的DFT并进行适当组合,达到删除重复计算。

减少乘法运算和简化结构的目的。此后,在这思想基础上又开发了高基和分裂基等快速算法,随着数字技术的高速发展,1976年出现建立在数论和多项式理论基础上的维诺格勒傅里叶变换算法(WFTA)和素因子傅里叶变换算法。

它们的共同特点是,当N是素数时,可以将DFT算转化为求循环卷积,从而更进一步减少乘法次数,提高速度。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13062353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存