Main Content

gausswin

高斯窗

说明

示例

w = gausswin(L) 返回一个长度为 L 个点的高斯窗。

w = gausswin(L,alpha) 返回一个宽度因子为 alpha、长度为 L 个点的高斯窗。

注意

如果该窗显示为经过裁剪,请增大点数 L

示例

全部折叠

创建一个长度为 64 个点的高斯窗。在 wvtool 中显示结果。

L = 64;
wvtool(gausswin(L))

此示例表明,对高斯窗进行傅里叶变换后,结果也是高斯函数,但其标准差与原高斯窗的标准差呈倒数关系。这是时频不确定性原理的图解。

使用 gausswin 和定义方程创建一个长度为 N=64 的高斯窗。设置 α=8,这会导致标准差为 (N-1)/2α=63/16。在高斯分布中,值基本上都位于均值加减 3 个标准差的范围内,或有效支持区间约为 [–12, 12]。

N = 64;
n = -(N-1)/2:(N-1)/2;
alpha = 8;

w = gausswin(N,alpha);

stdev = (N-1)/(2*alpha);
y = exp(-1/2*(n/stdev).^2);

plot(n,w)
hold on
plot(n,y,".")
hold off

xlabel("Samples")
title("Gaussian Window, N = "+N)
legend(["gausswin" "Definition"])

获得高斯窗在 4N=256 点处的傅里叶变换。使用 fftshift 使傅里叶变换以零频率 (DC) 处为中心。

nfft = 4*N;
freq = -pi:2*pi/nfft:pi-pi/nfft;

wdft = fftshift(fft(w,nfft));

对高斯窗进行傅里叶变换后,结果也是高斯函数,但其标准差是时域标准差的倒数。在计算中包括高斯归一化因子。

ydft = exp(-1/2*(freq/(1/stdev)).^2)*(stdev*sqrt(2*pi));

plot(freq/pi,abs(wdft))
hold on
plot(freq/pi,abs(ydft),".")
hold off

xlabel("Normalized frequency (\times\pi rad/sample)")
title("Fourier Transform of Gaussian Window")
legend(["fft" "Definition"])

输入参数

全部折叠

窗长度,指定为正整数。

数据类型: single | double

宽度因子,指定为正实数标量。alpha 与窗的宽度成反比。

数据类型: single | double

输出参量

全部折叠

高斯窗,以列向量形式返回。

算法

高斯窗的系数通过以下方程计算:

w(n)=e12(αn(L1)/2)2=en2/2σ2,

其中 –(L – 1)/2 ≤ n ≤ (L – 1)/2,并且 α 与高斯随机变量的标准差 σ 成反比。与高斯概率密度函数的标准差的精确对应为 σ = (L – 1)/(2α)

参考

[1] Hansen, Eric W. Fourier Transforms: Principles and Applications. New York: John Wiley & Sons, 2014.

[2] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

App

函数