信号处理之FFT(如何求幅度、相位、画频谱图)

您所在的位置:网站首页 fft怎么看频率 信号处理之FFT(如何求幅度、相位、画频谱图)

信号处理之FFT(如何求幅度、相位、画频谱图)

2024-01-21 22:39| 来源: 网络整理| 查看: 265

       信号处理,可以理解为对信号进行某种加工或变换来达到削弱信号中的多余内容、滤除混杂的噪声和干扰、将信号变换成容易分析与识别的形式,便于估计和选择它的特征参量等目的。

       快速傅里叶变换(FFT)是信号处理的重要组成部分,是离散傅里叶变换(DFT)的快速算法,可以将离散信号从时域变换到频域,因为很多信号在时域上很难看出特征,但转换到频域上就可以很容易地看出其特征,方便进行频谱分析(感兴趣的同学可以去看看文末第一篇参考文献,通俗易懂地讲解了时域和频域的关系)。FFT可用于求信号的幅度、相位以及画频谱图等,下面分别进行介绍。

        1.幅度计算:模拟信号经过AD采样后变成数字信号,N个采样点经过FFT后得到N个点的FFT结果(为方便进行FFT运算,通常N取2的整数次方),每一个点就对应着一个频率点,这个点的模值对应该频率值下的幅度,其中第一个点为直流分量,它的模值就是直流分量的N倍,即直流分量的幅度为FFT得到的第一个点的模值的N分之一;第二个点为基波分量(基频 = 采样频率/采样点数),第N+1个点为N次谐波分量(基频的N倍),基波分量和N次谐波分量的模值是该频率分量对应的幅度的N/2倍,即基波分量和N次谐波分量的幅度为FFT得到的第二个点和第N+1个点的模值的(N/2)分之一。

        2.相位计算:每个点的相位对应该频率下的信号的相位。MATLAB中求相位可用angle函数。

        3.画频谱图:FFT还可用于绘制信号的频谱图,从频谱图上可以很清晰地观察信号的频率分量,MATLAB代码如下: 

子程序:

function [x,freq] = fft_plot(x,Fs) %计算信号的双边幅度频谱和其横坐标、并调整使得横坐标中心频率为0Hz,输入:x为输入信号,Fs为采样频率,输出:x为输入信号的幅度频谱,freq为输入信号幅度频谱的横坐标 N = length(x); %%计算频谱的横坐标,使得中心频率为0Hz if mod(N,2)==0     k = -N/2:N/2-1; else     k = -(N-1)/2:(N-1)/2; end T = N/Fs; freq = k/T; x= fft(x)/N;%fft并归一化 x= fftshift(x);

主程序:

[x1,freq] = fft_plot(x,Fs); figure; plot(freq,abs(x1)); xlabel('频率(Hz)'); ylabel('幅度'); title('信号频谱图');

参考文献:https://zhuanlan.zhihu.com/p/19763358

参考文献:https://blog.csdn.net/weixin_39536010/article/details/111682978

参考文献:https://www.cnblogs.com/gjblog/p/13494103.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3