scipy.signal.windows.general_hamming

scipy.signal.windows.general_hamming(M, alpha, sym=True)[源代码]

返回广义汉明窗口。

通过将矩形窗口乘以余弦函数的一个周期来构造广义汉明窗口 [1].

参数
M集成

输出窗口中的点数。如果为零或更小,则返回空数组。

alpha浮动

窗口系数, \(\alpha\)

sym布尔值,可选

如果为True(默认值),则生成对称窗口,用于过滤设计。如果为False,则生成周期性窗口,用于频谱分析。

退货
wndarray

最大值归一化为1的窗口(尽管在以下情况下不会显示值1 M 是均匀的,并且 sym 为True)。

参见

hamming, hann

注意事项

广义汉明窗定义为

\[W(N)=\Alpha-\Left(1-\Alpha\Right)\cos\Left(\frac{2\pi{n}}{M-1}\Right) \qquad 0\leq n\leq M-1\]

普通Hamming窗和Hann窗都是广义Hamming窗的特例 \(\alpha\) =0.54及 \(\alpha\) 分别=0.5 [2].

参考文献

1

DSPRelated,“广义汉明窗族”,https://www.dsprelated.com/freebooks/sasp/Generalized_Hamming_Window_Family.html

2

维基百科,“窗口功能”,https://en.wikipedia.org/wiki/Window_function

3

Riccardo Piantanida ESA,“哨兵-1级1详细算法定义”,https://sentinel.esa.int/documents/247904/1877131/Sentinel-1-Level-1-Detailed-Algorithm-Definition

4

Matthieu Bourbigot ESA,“哨兵-1产品定义”,https://sentinel.esa.int/documents/247904/1877131/Sentinel-1-Product-Definition

示例

哨兵-1A/B仪器处理设施在处理星载合成孔径雷达(SAR)数据时使用广义汉明窗 [3]. 该工具使用不同的值来表示 \(\alpha\) 基于SAR仪器操作模式的参数。一些常见的 \(\alpha\) 值包括0.75、0.7和0.52 [4]. 作为示例,我们绘制这些不同的窗口。

>>> from scipy.signal.windows import general_hamming
>>> from scipy.fft import fft, fftshift
>>> import matplotlib.pyplot as plt
>>> fig1, spatial_plot = plt.subplots()
>>> spatial_plot.set_title("Generalized Hamming Windows")
>>> spatial_plot.set_ylabel("Amplitude")
>>> spatial_plot.set_xlabel("Sample")
>>> fig2, freq_plot = plt.subplots()
>>> freq_plot.set_title("Frequency Responses")
>>> freq_plot.set_ylabel("Normalized magnitude [dB]")
>>> freq_plot.set_xlabel("Normalized frequency [cycles per sample]")
>>> for alpha in [0.75, 0.7, 0.52]:
...     window = general_hamming(41, alpha)
...     spatial_plot.plot(window, label="{:.2f}".format(alpha))
...     A = fft(window, 2048) / (len(window)/2.0)
...     freq = np.linspace(-0.5, 0.5, len(A))
...     response = 20 * np.log10(np.abs(fftshift(A / abs(A).max())))
...     freq_plot.plot(freq, response, label="{:.2f}".format(alpha))
>>> freq_plot.legend(loc="upper right")
>>> spatial_plot.legend(loc="upper right")
../../_images/scipy-signal-windows-general_hamming-1_00.png
../../_images/scipy-signal-windows-general_hamming-1_01.png