MATLAB利用离散傅里叶变换DFT进行频谱分析 l定义 离散傅里叶变换(Discrete Fourier Transform,DFT)傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。书(高等数学 第七版 下册 同济大学数学系 编)上对傅里叶级数是这样定义的: 设
是周期为
的周期函数,且能展开成三角级数
如果公式
中的积分都存在,这时他们定出的系数
都叫函数
的傅里叶(Fourier)系数,将这些系数代入周期函数式右端,所得到的三角级数
叫做函数
的傅里叶级数。 信号在频域能够呈现出时域不易发现的性质和规律,傅里叶变换是将信号从时域变换到频域,便于在频域对信号的特性进行分析。离散傅里叶变换 (DFT),是傅里叶变换在时域和频域上的离散呈现形式,通俗的说就是将经过采样的有限长度时域离散采样序列变换为等长度的频域离散采样序列,通过对变换得到的频域采样序列进行适当的换算和处理,可以得到信号的频谱(频率-幅值曲线和频率-相位曲线)。 离散傅里叶变换 (DFT)的定义为:
式中,
为时域离散采样序列(通常为实数序列),N为时域离散采样序列
的长度,
为频域离散采样序列(通常为复数序列)。 快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的一种快速算法,FFT的计算结果与DFT完全相同,但FFT相对于DFT减小了计算量、节约计算资源消耗,能够适应在线计算,因此实际DFT都是通过FFT算法来求得结果。 变换和处理 Matlab软件自带fft函数实现快速傅里变换算法,但是光使用fft并不能直接得到信号的频谱,还需要解决以下问题,下图为DFT变换后的X(k)复数序列幅值、相位图。
a) 幅值变换:
序列的幅值大小与参与变换的时域序列
长度N有关,变换后的幅值
需要乘以2/N得到真实幅值; b) 有效频率区域:
序列由两部分共轭复数序列组成(复数共轭表示幅值相等、相位相反),相当于只有一半的复数序列是独立有效的,这部分复数序列对应
的频率区域
为时域离散采样序列x ( n ) 的采样频率)。 c) 直流信号的处理:直流信号幅值(对应频率0Hz)为两部分共轭复数序列在频率0Hz处的加和,其真实幅值再乘以2 / N后还需要再除以2得到真实的直流信号幅值。 函数 function [f,X_m,X_phi] = DFT(xn,ts,N,drawflag) % [f,X_m,X_phi] = DFT(xn,ts,N,drawflag) 离散序列的快速傅里叶变换,时域转换为频域 % 输入 xn为离散序列 为向量 % ts为序列的采样时间/s % N为FFT变换的点数,默认为xn的长度 % drawflag为绘图标识位,取0时不绘图,其余非0值时绘图,默认为绘图 % 输出 f为频率向量 % X_m为幅值向量 % X_phi为相位向量,单位为° % 注意计算出来的0频分量(直流分量应该除以2) 直流分量的符号应结合相位图来确定 例题1:单频正弦信号(整数周期采样) %% Eg 1 单频正弦信号 ts = 0.01; t = 0:ts:1; A = 1.5; % 幅值 f = 2; % 频率 w = 2*pi*f; % 角频率 phi = pi/3; % 初始相位 x = A*cos(w*t+phi); % 时域信号 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
例题2:单频正弦信号 %% Eg 2 单频正弦信号(非整数周期采样) ts = 0.01; t = 0:ts:1; A = 1.5; % 幅值 f = 1.5; % 频率 w = 2*pi*f; % 角频率 phi = pi/3; % 初始相位 x = A*cos(w*t+phi); % 时域信号 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
正弦信号频率为1.5Hz,频谱分析频率为0.99Hz、1.98Hz 正弦信号幅值为1.5,频谱分析幅值为1.034、0.923 正弦信号相位为60°,频谱分析相位为160.93°、-33.76° %% Eg 2 单频正弦信号(非整数周期采样) ts = 0.01; t = 0:ts:1; A = 1.5; % 幅值 f = 1.5; % 频率 w = 2*pi*f; % 角频率 phi = pi/3; % 初始相位 x = A*cos(w*t+phi); % 时域信号 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
正弦信号频率为1.5Hz,频谱分析频率主要成分为1.46Hz、 正弦信号幅值为1.5,频谱分析频率主要成分对应幅值为1.41 正弦信号相位为60°,频谱分析频率主要成分对应相位为89.5° 例题3:含有直流分量的单频正弦信号 %% Eg 3 含有直流分量的单频正弦信号 ts = 0.01; t = 0:ts:1; A = 1.5; % 幅值 f = 5; % 频率 w = 2*pi*f; % 角频率 phi = pi/6; % 初始相位 x = 0.5 + A*cos(w*t+phi); % 时域信号,带有直流偏移0.5 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
正弦信号频率为5Hz,频谱分析频率为4.95Hz 正弦信号幅值为1.5,频谱分析幅值为1.498 正弦信号相位为30°,频谱分析相位为38.66° 正弦信号直流分量0.5,频谱分析直流分量为0.51 例题4:正弦复合信号 %% Eg 4 正弦复合信号 ts = 0.01; t = 0:ts:2; A = [1.5 1 0.5 0.2]; % 幅值 f = [3 6 9 15]; % 频率 w = 2*pi*f; % 角频率 phi = (1:4)*pi/4; % 初始相位 x = -0.5 + A(1)*cos(w(1)*t+phi(1)) + A(2)*cos(w(2)*t+phi(2)) + A(3)*cos(w(3)*t+phi(3)) + A(4)*cos(w(4)*t+phi(4)); % 时域信号 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
正弦信号频率为3、6、9、15Hz,频谱分析频率为2.985、5.97、8.96、14.93Hz 正弦信号幅值为1.5、1、0.5、0.2,频谱分析幅值为1.499、0.989、0.485、0.192 正弦信号相位为45°、90°、135°、180°,频谱分析相位为50.6°、101.5°、152.9°、210° 正弦信号直流分量-0.5,频谱分析直流分量为-0.497 例题5:含有随机干扰的正弦信号 %% Eg 5 含有随机干扰的正弦信号 ts = 0.01; t = 0:ts:2; A = [1 0.5]; % 幅值 f = [3 10]; % 频率 w = 2*pi*f; % 角频率 phi = (1:2)*pi/3; % 初始相位 x = A(1)*cos(w(1)*t+phi(1)) + A(2)*cos(w(2)*t+phi(2)) + 0.8*(rand(size(t))-0.5); % 时域信号 figure plot(t,x) xlabel(‘时间/s’) ylabel(‘时域信号x(t)’) % DFT变换将时域转换到频域,并绘制频谱图 [f,X_m,X_phi] = DFT(x,ts);
正弦信号频率为3、10Hz,频谱分析频率为2.985、9.95Hz 正弦信号幅值为1、0.5,频谱分析幅值为0.978、0.456 正弦信号相位为60°、135°,频谱分析相位为65.1°、139.8°
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/56802.html