在
导读
通信、信号处理和更广泛的电气工程领域中,信号是任选的、随时间变化的或随空间变化的量。信号可以分为连续时间信号和离散时间信号:
离散或离散时间信号是时序的,并且可以从连续时间信号中采样。
图1连续时间信号和离散时间信号
周期信号和非周期信号。
设一个信号周期为t,则定义为基频f0=1/T、谐振频率kf0、k=1、2、3 .
任何周期信号(不是严格意义上的任何信号)都可以叠加不同谐振频率的kf0信号。 这就是傅立叶级数展开。
图2周期信号和非周期信号
信号有一个或多个频率,可以从两个不同的角度观察:时域和频域。
图3信号的时域和频域
本文介绍了频域的分析方法。 当然,使用计算机。
用计算机MATLAB软件附带的FFT函数分析频谱。
举个例子好像很简单,学生们要真正理解,其实需要一定的信号处理知识的积累。
查看
四种傅里叶变换
经典图4,我认为学习通信和数字信号处理,必须了解各种“傅立叶”。
图444个经典傅立叶变换
图4 ) a )是最公知的傅立叶变换,其中相对于非周期性的、连续的信号,变换后的频谱是连续的、非周期性的。 公式是
图4(b )是傅立叶级数,相对于周期性、离散的信号,变换后的信号是离散、非周期性的频谱。
图4 c是离散时间傅立叶变换,其中,相对于离散、非周期性的信号,变换后的信号是周期性的、连续的频谱。
图4(d )是离散傅立叶级数,对于离散的、周期性的信号,变换后的频谱是离散的、周期性的。
图54个傅立叶变换总结
4种傅立叶变换的可以归纳为图5。
我们发现:
时域连续性总是对应于频域中的非周期; 时域离散总是对应于频域周期; 反之亦然。
其中,FT、FS和DTFT不适合在计算机上处理,因为至少有一个域不是离散信号。
DFS时域和频域满足离散要求,而时域是无限长的周期序列。
图6 DFS至DFT
因此,取其中的n个点,定义为主值序列,用于求出傅立叶变换。
这样的傅立叶变换就是DFT。 是离散傅立叶变换。 那个公式如下。
DFT的运算量大,不利于大数据量的计算。
图7 DFT至FFT
这个时候,出现了
快速傅里叶变换,即FFT。FFT是DFT的快速算法,可以节省大量的计算时间,其本质仍然是DFT。
DFT的时域与频域的联系
仔细观察图4的DFS系列,主值序列有N个点。
在时域中,如果离散信号是以T1为周期向两边延拓,那么频域的谱间隔为f1=1/T1;
同样的,如果在频域是以fs为周期向两边延拓,那么时域的信号间隔为Ts=1/fs;
所以,我们可以得出fs/f1=N;
换个角度看。
X[k]算出来的是一个序列值,那么这个序列值与频率有何关系呢?
我们知道DFT的频谱间隔为f1,那么,那么频率轴就是k倍的f1,即是kf1,其中f1=fs/N;
举个例子
我们定义个信号,它包含幅度值为0.7,频率为50Hz的正弦和幅度值为1,频率为120Hz的正弦.
采样频率为1kHz;
信号序列长度N=1500;
程序如下:
clf; Fs = 1000; % 采样频率1kHz T = 1/Fs; % 采样周期1ms L = 1500; % 信号长度 t = (0:L-1)*T; % 时间序列 S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); subplot(211); plot(1000*t,S); title('包含幅值为0.7的50Hz正弦量和幅值为1的120Hz正弦量') xlabel('t (毫秒)') ylabel('X(t)') subplot(212); plot(1000*t(1:50),S(1:50)); title('取前50ms的数据,包含幅值为0.7的50Hz正弦量和幅值为1的120Hz正弦量') xlabel('t (毫秒)') ylabel('X(t)') Y = fft(S); mag = abs(Y); %求得FFT变换后的振幅 f=(0:L-1)*Fs/L; %频率序列 figure plot(f,mag); %绘出随频率变化的振幅 title('信号的FFT') xlabel('频率f (Hz)') ylabel('|幅度mag|')通过图8,我们可以看出原始信号的波形。图8的上方为1500毫秒的信号,图8的下方为取前50ms的信号。当从上图中,很难看出信号是由50Hz和120Hz的频率组成。
图9的横坐标为频率单位Hz,总长为1000Hz(为什么呢?读者可以思考下)
我们发现在50Hz和120Hz处,出现明显的峰值。
总结
本文中采样频率Fs=1000Hz,整个频谱是关于500Hz对称的。其中500Hz就是Nyquist频率Fs/2。
所以FFT的频谱图是以Nyquist频率为对称轴的。
并且可以明显识别出信号中含有两种频率成分:50Hz和120Hz。
因此用FFT对信号做谱分析,只需考察0~Nyquist频率范围内的幅频特性。
本文只是简单的入门,如果各位同学想用好FFT这个频谱分析工具,建议动手去实验,可以发现很多有趣的性质。
看到这里帮班长点个赞吧,欢迎在评论去留言讨论!
参考文献:
[1]FFT-Matlab初步实现.https://www.cnblogs.com/WHaoL/p/6595132.html
[2]matlab 中fft的用法.https://www.cnblogs.com/alexanderkun/p/4723577.html
[3]fft.https://ww2.mathworks.cn/help/matlab/ref/fft.html