当前位置: 首页 > 科技观察

模拟信号与数字信号的桥梁——奈奎斯特采样定理

时间:2023-03-18 16:49:37 科技观察

我们身边有各种各样的模拟信号,电流、电磁波、温度、声音等等。作为一个计算机系统,它只能识别0和1,也就是说它只能处理数字信息,但是它是如何处理我们身边的这些模拟信号的呢?要理解这个问题,我们需要理解数字信号处理领域中一个非常重要的定理,采样定理,它是模拟信号和数字信号之间的基本桥梁。本文将和你一起学习奈奎斯特-香农采样定理。采样定理最早由美国电信工程师奈奎斯特于1928年提出,故称奈奎斯特采样定理。1933年,苏联工程师Kotelnikov首先严格地表述了这个定理,因此在苏联文献中称为Kotelnikov抽样定理。1948年,信息论的创始人香农明确阐述了这个定理,并正式将其作为定理引用,因此在很多文献中也被称为香农采样定理。我们先看下面的例子,对于一个正弦信号:如果我们以0.5、0.25、0.1、0.01的间隔取点,然后用直线连接每个点。从上图可以发现,时间间隔越小,记录信号的点数越多,信号还原就越准确。显然,我们不可能用无限多的点来记录这个信号。如何准确表达信号,合理利用计算机资源?其实大佬们早就研究过了,就是我们今天要学习的奈奎斯特-香农采样定理。采样频率必须大于信号最高频率的两倍,才能保留信号的完整信息而不失真。即:这里,我们称这个信号频率(这个临界点)为奈奎斯特频率。接下来,我们不妨先通过一个实验来理解这个定理。如果有这样一个信号如下:设f=5Hz,然后依次以5Hz、10Hz、20Hz、40Hz、100Hz的采样率采样,观察不同的采样率。对于时域和频域的信号恢复,旧规则先编码。importnumpyasnpimportmatplotlib.pyplotaspltdefsignalCreate(_fs,_N,_f0):fs=_fs#采样率N=_N#数据点f0=_f0n=np.linspace(0,N-1,N)t=n/fsyt=np.exp(1j*2*np.pi*f0*t)f=n*fs/N-fs/2yf=np.fft.fftshift(np.fft.fft(yt))return,yt,f,yft,yt,f,yf=signalCreate(5,128,5)plt.subplot(5,2,1)plt.plot(t,yt)plt.subplot(5,2,2)plt.plot(f,np.abs(yf))t,yt,f,yf=signalCreate(10,128,5)plt.subplot(5,2,3)plt.plot(t,yt)plt.subplot(5,2,4)plt.plot(f,np.abs(yf))t,yt,f,yf=signalCreate(20,128,5)plt.subplot(5,2,5)plt.plot(t,yt)plt.subplot(5,2,6)plt.plot(f,np.abs(yf))t,yt,f,yf=signalCreate(40,128,5)plt.subplot(5,2,7)plt.plot(t,yt)plt.subplot(5,2,8)plt.plot(f,np.abs(yf))t,yt,f,yf=signalCreate(100,128,5)plt.subplot(5,2,9)plt.plot(t,yt)plt.subplot(5,2,10)plt.plot(f,np.abs(yf))plt.show()的结果如下图所示,左边是时域,右边是频域。当采样频率为5Hz时,还原信号为频率为0的直流信号。显然,当采样频率小于2倍信号频率时,无法准确还原原始信号;当采样频率为10Hz时,还原出来的信号似乎还是有问题。很明显,信号在频域内无法完全展现;当采样频率为20Hz时,还原信号在时域和频域上都已经非常接近原始信号;当然我们继续提高采样频率。当采样频率为40Hz和100Hz时,还原信号更接近真实信号。不同采样率下的采样但是,我们可以发现,采样频率为40Hz和100Hz的频域图形在100Hz时明显“更胖”。这是因为频率分辨率变大,采样点数不变,采样分辨率随着采样频域的增加而增加。采样分辨率可以通过以下公式计算:显然,如果采样频率过低,则无法正确还原真实信号;但如果采样频率过高,频率分辨率会变大,同时会产生大量数据。通常,在实际应用中,采样频率选择高于奈奎斯特频率的两倍(例如3至5倍)。另外,在采样过程中,比较采样频率与奈奎斯特频率之间的关系,我们还可以这样描述:采样频率高于奈奎斯特频率的两倍,称为过采样;采样频率低于奈奎斯特频率的两倍,这种采样称为欠采样。本文转载自微信公众号“威尔的食堂”,可通过以下二维码关注。转载本文请联系威尔食堂公众号。