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)。
注意事项
广义汉明窗定义为
\[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")