Python 入门教程:关于 numpy 窗函数 Blackman


布莱克曼窗(Blackman window):它是通过使用余弦求和的前三个项形成的圆锥。 它被设计为具有尽可能接近的最小泄漏。 它接近最佳,仅比Kaiser窗口(Kaiser window)差一点。

参数(numpy.blackman):

M:int输出窗口中的点数。

    如果为零或更少,则返回一个空数组。

返回值:

out:数组

最大值标准化为1的窗口(仅当样本数为奇数时才显示1)。

示例:

import numpy as np  
print(np.blackman(12))

输出:

[ -1.38777878e-17   3.26064346e-02   1.59903635e-01   4.14397981e-01
   7.36045180e-01   9.67046769e-01   9.67046769e-01   7.36045180e-01
   4.14397981e-01   1.59903635e-01   3.26064346e-02  -1.38777878e-17]

Python 入门教程:关于 numpy 窗函数 Blackman

绘制窗口及其频率响应(需要SciPy和matplotlib):

代码:对于窗口:

import numpy as np  
import matplotlib.pyplot as plt  
from numpy.fft import fft, fftshift  

window = np.blackman(51) 

plt.plot(window)  
plt.title("www.linuxboy.net") 
plt.ylabel("Amplitude")  
plt.xlabel("Sample")  
plt.show()

输出:

Python 入门教程:关于 numpy 窗函数 Blackman

代码:对于频率:

import numpy as np  
import matplotlib.pyplot as plt  
from numpy.fft import fft, fftshift  

window = np.blackman(51) 

plt.figure() 

A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A)) 
freq = np.linspace(-0.5, 0.5, len(A)) 
response = 20 * np.log10(mag) 
response = np.clip(response, -100, 100) 

plt.plot(freq, response) 
plt.title("www.linuxboy.net") 
plt.ylabel("Magnitude [dB]") 
plt.xlabel("Normalized frequency [cycles per sample]") 
plt.axis('tight') 
plt.show()

输出:

Python 入门教程:关于 numpy 窗函数 Blackman

https://www.linuxboy.net/topicnews.aspx?tid=17

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-12/161769.htm

相关内容