本帖最后由 酷玩无线电 于 2017-1-7 23:21 编辑
信号在频域
频谱概念 信号可以分为时域信号和频域信号,听起来有点抽象,我们可以这样来思考前面举例的语音信号,如果X轴为时间轴,Y轴是语音的振幅,坐标系体现语音随时间振幅的变化,就是信号的时域模型。如果X轴换成频率轴(单位Hz),Y轴是语音的振幅,坐标系体现语音在不同频率能量的变化,那就进入了信号的频域分析。
频谱示意图 参见下图,X轴为0~5000Hz的频谱,可以看出在不同频率下信号能量的分布情况,下图可以看出低频0~1000Hz比高频1000~5000Hz有更高的能力分布。
傅立叶变换 傅里叶变换(Fourier transform)是一种线性的积分变换,常在将信号在时域(或空域)和频域之间变换时使用。 离散傅里叶变换(Discrete Fourier Transform,缩写为DFT),是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。 傅立叶变换
numpy中作快速傅立叶变换的函数是numpy.fft,其中返回的数组A[0]为0频率的能量,对于傅立叶变换点数为偶数的情况来说,A[1:n/2]即1~n/2是正频率输出,A[n/2+1:]即n/2~n-1是负频率输出。 傅立叶变换例子1 采样率fs:64Hz 傅立叶变换点数:16 正弦波频率fc:4Hz 正弦波信号:y = sin(2*π*fc*t)
傅立叶变换点数决定了FFT计算结果的bin分辨率:fs/傅立叶变换点数=64/16=4
从上图可以看出信号能量主要集中在4Hz处,如下频率序列都有对应的FFT计算结果。 频率序列:[ 0. 4. 8. 12. 16. 20. 24. 28.] 对应FFT计算结果如下: [ 6.22374531e-18 5.00000000e-01 4.91616938e-17 1.96767894e-16 3.76385442e-17 1.21014683e-16 5.01509866e-17 1.67248602e-16]
傅立叶变换
傅立叶变换例子:频谱泄露
上面一个例子我们选取的信号频率是4Hz,正好落入FFT的bin中: [ 0. 4. 8. 12. 16. 20. 24. 28.]
假如我们选择的频率不是在这些bin里面,会发生什么情况: 参见下图,信号产生频率fc为6Hz,可以看出信号能量泄漏到4H之外的其他FFT频率序列中: [ 0.20603489 0.37575121 0.27920834 0.07737123 0.04176116 0.02859865 0.02256836 0.01978133]
|