概述
从理论上讲,正弦函数的傅里叶变换是冲击函数:
下面介绍在Matlab中,如何分析正弦函数的FFT:
它的幅值为原正弦信号幅值的1/2倍;即:若x(t)=Acos(Ωt),则其频谱幅值最大值为A/2;如左图:
但是,我们用matlab求出来的频谱图却不是左边这样的,而是右图;
原因是:
1.理论中的正弦信号是无限长连续信号,而matlab,参与运算的信号只是截取了其中1个周期或多个周期的信号,就变成了有限长信号了;无限长信号和有限长信号的傅里叶变换是不一样的!
2.理论中的正弦信号是连续的模拟信号,而应用中的正弦信号都是采样,量化处理的,是数字信号;模拟信号和数字信号的傅里叶变换是不一样的!
对于已知周期的信号,通常只需要取其中一个周期做代表分析;但实际应用中,信号的频率通常已知,但噪声的频率却不固定,所以,应尽可能长的截取信号;
已知正弦信号 x(t)=4.6sin(2*pi*f0*t),每周波采样点数Ns=512,采样频率fs=f0*512;(f0为正弦信号的固有频率)
在Matlab中需要做一下处理:
1.将时间轴离散化: ts = tp * n=(T0/Ns) * n =n/f0*512=n/fs; n = 0:511; tp为每周波采样512点的时间间隔;
2.将连续信号x(t)离散化:x(ts)= 4.6sin(2*pi*f0*ts) = 4.6sin(2*pi*n/N);
可以看出x(t)离散化后,已经与信号的固有频率没关系了,这个信号已经变成了与n相关的函数:
x(n)= 4.6sin(2*pi*n/N); n = 0:511;
3.离散信号在Matlab中求FFT就很容易了:
X(n)= FFT( x(n) ) *2 / Ns ;
4.根据周期信号的傅里叶变换的性质:时域的周期,造成频域的离散;时间的离散,造成频域的周期;
可知:X(n) 为离散的,且有周期;离散点的间距正好是正弦信号的固有频率f0 ;周期为采样周期1/fs;
X(0),X(1)....分别对应x(t)的第0次,1次...谐波;
5.如果要在二维图上显示频率与频谱幅值的关系,还需要:
将横轴映射为频率值,映射关系为 f = n*f0;
6.根据奈奎斯特采样定理,当采样频率为fs时,可以得到FFT后的最高有效频率为fs/2;最高谐波次数为Ns/2-1;
具体实现如下(Matlab中,已调试通过):
%求正弦信号的傅里叶变换
Ns = 512;%采样点
n = 0 : Ns-1;
xn = 4.6*sin(2*pi*n/Ns);%离散的正弦信号
Xn = fft( xn ) ; %fft的结果是复数
Xn = abs(Xn) *2 /Ns; %求绝对值得到幅值,乘以2,乘以Ns是由傅里叶变换公式导致的
%用二维图显示原始正弦信号
subplot(3,1,1),plot(n, xn); %画出原始正弦信号
xlabel('n = 0:511'); ylabel('振幅');
title('原始的正弦信号');
%用二维图显示信号0~255次的谐波
Nyquist = Ns/2-1;%根据奈奎斯特定理,只需显示前255次的谐波
subplot(3,1,2),plot(n(1:Nyquist), Xn(1:Nyquist));
xlabel('n = 0:255'); ylabel('谐波幅值');
title('0~255次的谐波');
%用二维图显示信号频率与幅值的关系
f0 = 50; %假设信号的固有频率为50Hz
f = n*f0; %频率与横轴序列n的映射关系
subplot(3,1,3),plot(f(1:Nyquist), Xn(1:Nyquist)); %根据奈奎斯特定理,只需显示前fs/2部分的频谱
xlabel('f = 0, 50Hz... 255*f0 Hz '); ylabel('幅值');
title('频率与幅值的关系');
运行结果如下:
图中,在f = f0 = 50Hz时,幅值为4.6;即一次谐波幅值为4.6;
最后
以上就是优美乌龟为你收集整理的正弦函数的频谱图(FFT)的全部内容,希望文章能够帮你解决正弦函数的频谱图(FFT)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复