信号分辨率介绍
信号的分辨率就是指信号经过处理后在频域上自变量的步进值,即频率的步进值。
一般来讲,分辨率越高,频点间隔就越低,频谱就越精细。
分辨率计算公式
Δf=1T=FsN Δf=\frac{1}{T}=\frac{F_s}{N}Δf=T1=NFs
Δf:最小可分辨频率间隔T:采样周期Fs:采样率N:采样点数\Delta f\text{:最小可分辨频率间隔}\quad T\text{:采样周期}\quad F_s\text{:采样率}\quad N\text{:采样点数}Δf:最小可分辨频率间隔T:采样周期Fs:采样率N:采样点数
实际工程中怎么控制分辨率
根据分辨率计算公式可知,在实际工程中只需要改变采样率和采样点数就可以实现对分辨率的调控。如果需要高分辨率需要提高采样点数,如需降低则反之。
假设有一个由幅度1V,频率10KHz的信号A与幅度0.8V,频率11KHz的信号B构成的混合波,如果要求经过FFT处理后能正确得到信号的幅度信息与频率信息,那么则必须保证ΔfΔfΔf能满足实际频率能与理论频点相对应。
如果设置采样率为1.024MHz,采样点数1024.那么经过计算可得ΔfΔfΔf刚好就是1KHz。此时进行FFT后的幅度谱存在10KHz、11KHz两个理论频点与实际频点相对应,可以完美分辨出两个信号:
此时可以发现,我们可以以较低的采样率满足工程需求,能在很大程度上减少硬件负担。
分辨率不满足要求的情况
当ΔfΔfΔf大于两个信号的频率差时,此时视为不满足要求的情况。
假设在不改变已有条件的情况下,仅改变信号B的频率为10.5KHz,那么此时会因为分辨率不满足要求导致信号B发生频谱泄露导致信号A和信号B的检测都出现问题:
可以看出来10KHz的位置幅度为1.2,11KHz的位置幅度为0.5,与设定值相差较大。
如果是只有一个信号呢 🤨?
此时只保留信号B,幅度设置为1.0V再进行FFT处理:
可以看到在10KHz、11KHz两个频点上都有尖峰,但是信息都对不上。造成这个的原因则是因为Δf过大导致理论频点(10.5KHz)没法与实际频点(10KHz、11KHz)对齐,从而引发了频谱泄露。
因此,在实际工程中必须保证ΔfΔfΔf能满足实际频率能与理论频点相对应,不然可能会发生频谱泄露现象导致信息错误。
在不改变采样率的情况下改变分辨率
根据之前的数学公式,如果在硬件采样率不变的情况下只能改变采样点数来改变分辨率。
在此之前,必须要了解一个信号处理时需要注意的一个细节:采样点数≠处理点数。
什么是处理点数?即采样之后实际拿去进行处理的数据点数。
如果我采了100个点,但是我只抽出50个点进行数据处理。则采样点数为100点,处理点数为50点。
在之前的示例中,处理点数与采样点数一致所以并未作出区分。
而这种抽取采样数据进行处理的方式称为抽样采样。
软件采样率不变,处理点数改变
在之前的示例中,1.024MHz采样率,1024处理点数会导致在处理10.5KHz的信号时会发生频谱泄露,那么现在将采样点数提升至2048个点,处理点数一致。此时再对信号进行FFT处理:
此刻因为处理点数变多了,导致ΔfΔfΔf变为500Hz,频谱存在了与10.5KHz对应的频点,使信号能完美分辨。
处理点数不变,软件采样率改变
在信号处理时,可以通过每隔M个采样点进行数据处理实现M倍抽样采样,此时虽然ADC硬件的采样率并未发生改变,但是因为处理数据的时间间隔变为采样间隔的M倍导致在数据运算时,软件采样率变为1M\frac{1}{M}M1倍。
还是之前的例子,对一个10.5KHz,幅度1.0V的信号进行FFT处理,但是每个处理点之间间隔一个采样点实现抽样采样:
可以看到,处理点数不变,但是软件采样率发生了改变,导致分辨率提升,现在可以完美分辨10.5KHz的信号。
分辨率的冗余
以上的情况都是在尽可能的减少运算量的负担下实现的,当存在多个信号时,可以适当提升分辨率,从而避免意外情况。例如在之前分辨信号A、信号B的例子中,分辨率是刚好满足要求的,此时两个信号在幅度谱上是挨在一起的,如果担心两个信号之前的频谱混叠,可以将ΔfΔfΔf降低,提升分辨率,让两个信号之间间隔几个频点,避免意外情况。
总结
综上所述,在信号处理时,信号的分辨率是一个很重要参数,合理的分辨率设计可以很好的提升信号的区分度或减少运算量,是信号处理时很重要的知识。