【频域分析】频谱泄露、频率分辨率、栅栏效应
信号的频域分析
- 一、时域加窗
- 频谱泄露
- 产生频谱泄露的原因是什么?
- 如何抑制这一现象?
- 二、频率分辨率
- 频率分辨率如何计算?
- 怎样提高频率分辨率?
- 三、频域采样
- 栅栏效应
- 如何缓解栅栏效应?
- 四、MATLAB代码
- 参考文献
一、时域加窗
现实生活中的信号大部分是连续的,通过对连续的信号进行采样得到散时间信号,但是计算机所能处理的数据都是有限长的,因而我们可以对原始序列做加窗处理使其成为有限长序列。
以矩形窗为例,其时域表达式为:
式(1)中,N=M+1N=M+1N=M+1,为矩形窗的长度。
对无限长序列进行加窗处理,就是对序列在时域上乘以一个窗函数。
由卷积定理可以得到,时域的相乘等于频域的卷积。
设仿真信号的时域表达式为:
x(t)=A0∗cos(2πf0t)+A1∗cos(2πf1t)x(t)=A_{0}*cos(2πf_{0}t)+A_{1}*cos(2πf_{1}t) x(t)=A0∗cos(2πf0t)+A1∗cos(2πf1t)
x(t)x(t)x(t)做傅里叶变换(FT)的频域表达式为:
X(jΩ)=A0πδ(Ω+Ω0)+A0πδ(Ω−Ω0)+A1πδ(Ω+Ω0)+A1πδ(Ω−Ω0)X(jΩ)=A_{0}πδ(Ω+Ω_{0})+A_{0}πδ(Ω-Ω_{0})+A_{1}πδ(Ω+Ω_{0})+A_{1}πδ(Ω-Ω_{0})X(jΩ)=A0πδ(Ω+Ω0)+A0πδ(Ω−Ω0)+A1πδ(Ω+Ω0)+A1πδ(Ω−Ω0)
连续信号x(t)x(t)x(t)的波形及频谱如图1所示。
连续信号x(t)x(t)x(t)经过采样后,得到的离散时间的表达式为:
x[n]=x(t)∣t=nTsx[n]=x(t)|_{t=nT_{s}} x[n]=x(t)∣t=nTs
离散序列x[n]x[n]x[n]做离散时间傅里叶变换(DTFT)的频域表达式为:
X(ejw)=1Ts∑k=−∞∞X(jwTs−jk2πTs)X(e^{jw})=\frac{1}{T_{s}}\sum_{k=-∞}^{∞}X(j\frac{w}{T_{s}}-jk\frac{2π}{T_{s}})X(ejw)=Ts1k=−∞∑∞X(jTsw−jkTs2π)
离散序列x[n]x[n]x[n]的波形及频谱如图2所示。
矩形窗函数w[n]w[n]w[n]做离散时间傅里叶变换(DTFT)的频域表达式为:
W(ejw)=e−jw(N−1)/2∗sin(wN/2)sin(w/2)W(e^{jw})=e^{-jw(N-1)/2} *\frac{sin(wN/2)}{sin(w/2)}W(ejw)=e−jw(N−1)/2∗sin(w/2)sin(wN/2)
矩形窗函数w[n]w[n]w[n]的波形及频谱如图3所示。
离散序列x[n]x[n]x[n]与窗函数w[n]w[n]w[n]的卷积为:
V(ejw)=12π∫−ππX(ejθ)W(ej(w−θ))dθ=A02W(ej(w+w0))+A02W(ej(w−w0))+A12W(ej(w+w0))+A12W(ej(w−w0))V(e^{jw})=\frac{1}{2π}\int_{-π}^{π}X(e^{jθ})W(e^{j(w-θ)})dθ=\frac{A_{0}}{2}W(e^{j(w+w_{0})})+\frac{A_{0}}{2}W(e^{j(w-w_{0})})+\frac{A_{1}}{2}W(e^{j(w+w_{0})})+\frac{A_{1}}{2}W(e^{j(w-w_{0})})V(ejw)=2π1∫−ππX(ejθ)W(ej(w−θ))dθ=2A0W(ej(w+w0))+2A0W(ej(w−w0))+2A1W(ej(w+w0))+2A1W(ej(w−w0))
截断后的离散序列v[n]v[n]v[n]的波形及频谱如图4所示。
频谱泄露
信号的频率成分包括1MHz和1.05MHz,1MHz对应的幅值为1,但是1.05MHz的幅值减小了,且在其他频率点上都有不小的幅值。这就是出现了频谱泄露的现象。
产生频谱泄露的原因是什么?
由于计算机只能处理有限长的数据,所以需要对采集的信号进行截断,相当于对原始信号做了加窗处理。对信号加窗就是对信号在时域上乘以一个窗函数,时域的乘积对应频域的卷积,而窗函数的频域包括主瓣和旁瓣,旁瓣造成了信号频谱的泄漏。频域泄漏不可避免,只能减小。
如何抑制这一现象?
可以取更长的数据点,与原始数据越接近越好,但缺点就是运算量加大;
可以选择窗谱的旁瓣能量较小的窗函数。
典型的窗函数中,矩形窗的频率分辨率最高,旁瓣泄露最大。
二、频率分辨率
频率分辨率如何计算?
为了便于理解什么是频率分辨率,可以将频率分辨率划分为两种类型,一种是波形频率分辨率(Waveform Frequency Resolution,简记为波形分辨率),也称为视觉频率分辨率,另一种则为FFT频率分辨率(简记为FFT分辨率)。
波形分辨率:在频谱图中,两个频率可以被分辨率的最小间隔,与原始信号的时间长度有关。
△Rw=1T△R_{w}=\frac{1}{T} △Rw=T1
其中,TTT为原始数据的时长。
FFT分辨率:在频谱图中的数据点数,跟信号做FFT计算时的点数有关。
△Rfft=FsNfft△R_{fft}=\frac{F_{s}}{N_{fft}} △Rfft=NfftFs
其中,FsF_{s}Fs为采样频率,NfftN_{fft}Nfft为信号做FFT计算时的点数。
怎样提高频率分辨率?
例如,有一个复合信号的时域表达式为x(t)=cos(2πf1t)+cos(2πf2t)x(t)=cos(2πf_{1}t)+cos(2πf_{2}t)x(t)=cos(2πf1t)+cos(2πf2t)
其中f1=1MHzf_{1}=1MHzf1=1MHz,f2=1.05MHzf_{2}=1.05MHzf2=1.05MHz。x(t)x(t)x(t)的波形及频谱如图6所示。
由上图中的频谱可以发现,在1MHz附近两个频率出现混叠,无法有效区分1MHz和1.05MHz,说明频率分辨率不够。
对时域数据进行补零,能否改变频率分辨率呢?例如在原始数据点后面再补充6000个数值为0的点,对信号本身数据没有影响,只是增加了参与FFT计算的数据点数,得到信号的波形及频谱如图7所示。
通过对原始数据进行补零操作,在频谱图中的数据点更密集了。但是仍然无法区分1MHz和1.05MHz,由此证明信号的波形频率分辨率与参与FFT计算的数据点数NfftN_{fft}Nfft无关,只与原始数据的时长TTT有关。在时域上补零等价于频域上进行插值,由此增加了频率的点数,使得频谱曲线变得更光滑,即增加了FFT频率分辨率。
为了有效区分1MHz和1.05MHz,必须延长原始数据的时长以提高波形分辨率。以相同的采样频率对原始信号进行采样,采集7000个数据点。得到信号的波形及频谱如图8所示。
有图8可见,1MHz和1.05MHz可以被区分开,但是也出现了频谱泄露现象。此时信号的波形分辨率为:△Rw=170us≈14KHz△R_{w}=\frac{1}{70us}≈14KHz△Rw=70us1≈14KHz,小于1MHz和1.05MHz之间的距离50KHz50KHz50KHz。
为了减小频谱泄露,对原始信号取更长的数据点,采集8000个数据点。得到信号的波形及频谱如图9所示。
由图9可知,1MHz和1.05MHz对应的幅值均为1,且可以有效的区分开,此时信号的FFT分辨率为:△Rfft=Fs8000=12.5KHz△R_{fft}=\frac{F_{s}}{8000}=12.5KHz△Rfft=8000Fs=12.5KHz,刚好是1MHz和1.05MHz的公约数,即1MHz=12.5KHz×801MHz=12.5KHz×801MHz=12.5KHz×80,1.05MHz=12.5KHz×841.05MHz=12.5KHz×841.05MHz=12.5KHz×84。
所以取合适长度的数据点可以减轻频谱泄露。
三、频域采样
周期序列的DFS的系数X(k)X(k)X(k)与x(n)x(n)x(n)的一个周期的ZZZ变换在单位圆的NNN个均匀点上的抽样值相等,这就是频域采样。
频域采样定理:
当N≥LN≥LN≥L,即DFT计算的频域采样点数大于等于信号的长度时,频域采样不会造成时域混叠。
有限长序列x(n)x(n)x(n)的ZZZ变换为:
X(Z)=∑n=0N−1x(n)Z−n=∑n=0N−1[1N∑k=0N−1X(k)WN−kn]Z−n=1−Z−NN∑k=0N−1X(k)1−WN−kZ−1X(Z)=\sum_{n=0}^{N-1}x(n)Z^{-n}=\sum_{n=0}^{N-1}[\frac{1}{N}\sum_{k=0}^{N-1}X(k)W_{N}^{-kn}]Z^{-n}=\frac{1-Z^{-N}}{N}\sum_{k=0}^{N-1}\frac{X(k)}{1-W_{N}^{-k}Z^{-1}} X(Z)=n=0∑N−1x(n)Z−n=n=0∑N−1[N1k=0∑N−1X(k)WN−kn]Z−n=N1−Z−Nk=0∑N−11−WN−kZ−1X(k)
其中,WN−kn=ej2πknNW_{N}^{-kn}=e^{j\frac{2πkn}{N}}WN−kn=ejN2πkn,WN−k=ej2πkNW_{N}^{-k}=e^{j\frac{2πk}{N}}WN−k=ejN2πk。
栅栏效应
在进行DFT计算时需要对信号的频域进行采样,由于采样间隔为△w=2πN△w=\frac{2π}{N}△w=N2π,得到的频谱图都是由一根根离散的谱线组成,就像透过栅栏观看外景。
如何缓解栅栏效应?
增加频域采样点数N(不改变时域数据的情况下,在时域数据末端添加一些零值点,使得谱线更密),可缩小谱线间距,减轻栅栏效应。
四、MATLAB代码
%% 1000个数据点的波形及频谱
clc;
clear;
close all;Fs = 100e6; % 采样频率
f1 = 1e6;f2 = 1.05e6; % 信号的频率
T = 1/Fs; % 采样周期
L0 = 1000; % 信号长度
L = 1000; % 数据长度
t0 = (0:L0-1)*T; % 信号时间序列
t = (0:L-1)*T; % 数据时间序列
x = cos(2*pi*f1*t0)+cos(2*pi*f2*t0); % 原始信号% FFT
[f1,A1] = PinPu(x,Fs);
figure(1)
subplot(1,2,1);plot(t*1e6,x);
xlabel('t/us');title('时域');
subplot(1,2,2);plot(f1,A1);
xlabel('f/Hz');title('频域');xlim([0 2e6]);
%% 出现了频谱泄露现象
clc;
clear;
close all;Fs = 100e6; % 采样频率
f1 = 1e6;f2 = 1.05e6; % 信号的频率
T = 1/Fs; % 采样周期
L0 = 7000; % 信号长度
L = 7000; % 数据长度
t0 = (0:L0-1)*T; % 信号时间序列
t = (0:L-1)*T; % 数据时间序列
x = cos(2*pi*f1*t0)+cos(2*pi*f2*t0); % 原始信号
% FFT
[f1,A1] = PinPu(x,Fs);
figure(1)
subplot(1,2,1);plot(t*1e6,x);
xlabel('t/us');title('时域');
subplot(1,2,2);plot(f1,A1);
xlabel('f/Hz');title('频域');xlim([0 2e6]);
%% 8000个数据点的波形及频谱,提升了频率分辨率。
clc;
clear;
close all;Fs = 100e6; % 采样频率
f1 = 1e6;f2 = 1.05e6; % 信号的频率
T = 1/Fs; % 采样周期
L0 = 8000; % 信号长度
L = 8000; % 数据长度
t0 = (0:L0-1)*T; % 信号时间序列
t = (0:L-1)*T; % 数据时间序列
x = cos(2*pi*f1*t0)+cos(2*pi*f2*t0); % 原始信号
% FFT
[f1,A1] = PinPu(x,Fs);
figure(1)
subplot(1,2,1);plot(t*1e6,x);
xlabel('t/us');title('时域');
subplot(1,2,2);plot(f1,A1);
xlabel('f/Hz');title('频域');xlim([0 2e6]);
参考文献
[1] 数字信号处理
[2] 傅里叶变换的波形分辨率与频率分辨率
[3] 补零、频谱泄露、栅栏效应的关系?
【频域分析】频谱泄露、频率分辨率、栅栏效应相关推荐
- 分析时域窗长度和FFT计算点数对频率分辨率和栅栏效应的影响
目录 频率分辨率 栅栏效应 频谱泄漏 实验结果: 窗长度改变: 改变fft计算点数 分析: 代码: 频率分辨率 频率分辨率是指将两个相邻谱峰分开的能力.在实际应用中是指分辨两个不同频率信号的最小间隔. ...
- FFT运算的加深理解——栅栏效应、补零、物理分辨率、计算分辨率
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FFT运算的加深理解--栅栏效应.补零.物理分辨率.计算分辨率 栅栏效应和计算分辨率 物理分辨率 总结 栅栏效应和计算分辨率 栅栏效应 ...
- FFT频谱分析(补零、频谱泄露、栅栏效应、加窗、细化、频谱混叠、插值),Matlab、C语言代码
文章目录 引言 Matlab FFT函数 频谱混叠 栅栏效应 细化技术 什么是细化技术? 细化FFT技术的应用: Zoom-FFT算法介绍及MATLAB实现 Zoom-FFT根本没有实现"细 ...
- 频谱泄露栅栏效应及其解决方法
DFT中时域补零,频域对于单周期的FFT会更加细致,因为本来的DTFT就是对补零的部分取零的,补零反而能使DFT的采样更精细,何乐而不为呢?当然,补零对周期信号的DFT是一定存在影响的,毕竟周期变了. ...
- 栅栏效应、频谱泄露、细化技术
fft在分析频谱分析的时候,会有下面四个方面的误差: (1)频谱混叠 奈奎斯特定理已被众所周知了,所以几乎所有人的都知道为了不让频谱混叠,理论上采样频谱大于等于信号的最高频率.那和时域上联系起来的关系 ...
- 栅栏效应,频谱泄露,旁瓣效应
http://139791733.blog.163.com/blog/static/1786396420112715530734/ 栅栏效应: 对采样信号的频谱,为提高计算效率,通常采用FFT算法进行 ...
- FFT造成的频谱混叠,栅栏效应,频谱泄露,谱间干扰
fft在分析频谱分析的时候,会有下面四个方面的误差: (1)频谱混叠: 奈奎斯特定理已被众所周知了,所以几乎所有人的都知道为了不让频谱混叠,理论上采样频谱大于 等于信号的最高频率.那和时域上联系起来的 ...
- fft谱分析中的栅栏效应和频谱泄露
栅栏效应: 对采样信号的频谱,为提高计算效率,通常采用FFT算法进行计算,设数据点数为: N = T/dt = T.fs 则计算得到的离散频率点为: Xs( ...
- 利用dft对连续信号进行频谱分析_利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率。()...
利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率.() 答:减小采样间隔:提高采样点数 川乌既祛风湿,又能: 答:散寒 ...
- 图解DFT频谱分析及产生的问题(频谱混叠,频谱泄露,栅栏效应)
具体步骤 频域和时域对应关系 频谱混叠 频谱泄露 栅栏效应 混叠现象 频谱泄露 栅栏效应 结合matlab对应分析 PDF版本笔记 参考南京信息工程大学的<数字信号处理>,仅作学习总结
最新文章
- Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
- 高等数学:第六章 定积分的应用(1)定积分的应用 平面图形的面积 立体体积
- linux安装tf-gpu注意事项
- [转]关于父亲的故事
- 使用java程序对新浪微博的内容进行语义分析
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)
- 【渝粤教育】国家开放大学2018年秋季 0716-22T工程建设法规 参考试题
- React- jsx的使用可以渲染html标签 或React组件
- 52linux crond入门53crond时间规则54应用实例
- php模板怎么导入服务器_php项目怎么放到服务器
- 从0-1背包问题到动态规划
- Linux 操作系统(I)
- netty 5.0 源码分析(1)-----ButeBuf
- EasyUI:导出datagrid数据到桌面
- MapStruct使用指南
- 用python在大麦网抢票_大麦网抢票工具系列(一)
- matlab爆炸建模,7.2.5萨墓基尔加丹M螺旋爆炸技能建模分析
- 【vlan间通信的小玩法】在三层交换机上做ospf
- 会计专硕(MPACC)毕业论文该选如何选题?
- 神经网络训练会释放60多万磅二氧化碳?MIT的方法让它降到1/1300