# ty_pwelch
Welch 的功率谱密度估计
函数库: TySignalProcessing
# 语法
pxx, = ty_pwelch(x)
pxx, = ty_pwelch(x, window)
pxx, = ty_pwelch(x, window, noverlap)
pxx, = ty_pwelch(x, window, noverlap, nfft)
pxx, w = ty_pwelch(___)
pxx, f = ty_pwelch(___, fs)
pxx, w = ty_pwelch(x, window, noverlap, w)
pxx, f = ty_pwelch(x, window, noverlap, f, fs)
___ = ty_pwelch(___; freqrange = String)
___ = ty_pwelch(___; trace = String)
___, pxxc = ty_pwelch(___; conflevel = Real)
___ = ty_pwelch(___; stype = String)
ty_pwelch(___; plotfig = true)
# 说明
pxx, = ty_pwelch(x) 返回输入信号 x 的功率谱密度(PSD)估计值 pxx,使用 Welch 的重叠段平均估计器找到。当 x 是一个向量时,它被视为一个单通道。当 x 是一个矩阵时,PSD 对每一列进行独立计算并存储在 pxx 的相应列中。
- 如果 x 是实值,pxx 是一个单边 PSD 估计;
- 如果 x 是复值,pxx 是一个双边 PSD 估计。
默认情况下,x 被划分为尽可能长的片段,以获得接近但不超过 8 个片段,并有 50% 的重叠。每个段都用汉明窗进行窗化。修改后的周期图被平均化以获得 PSD 估计值。如果你不能将 x 的长度精确地划分为 50% 重叠的整数段,x 就会被相应地截断。
pxx, = ty_pwelch(x, window) 使用输入的向量或整数 window,将信号分成若干段。
- 如果 window 是一个向量,ty_pwelch 将信号分成与 window 长度相等的片段。修改后的周期图是用信号段乘以向量 window 来计算的;
- 如果 window 是一个整数,信号被分成长度为 window 的片段。修改后的周期图是用长度为 window 的汉明窗来计算的。
pxx, = ty_pwelch(x, window, noverlap) 使用段与段之间重叠的 noverlap 样本。
- 如果 window 是整数,noverlap 必须是一个比 window 小的正整数;
- 如果 window 是一个向量,noverlap 必须是一个小于 window 长度的正整数。如果不指定 noverlap,或将 noverlap 指定为空,则重叠样本的默认数量为窗口长度的 50%。
pxx, = ty_pwelch(x, window, noverlap, nfft) 指定在 PSD 估计中使用的离散傅里叶变换(DFT)点的数量。默认的 nfft 是 256 或大于段长度的 2 的次幂。
pxx, w = ty_pwelch(___) 如果 pxx 是单边 PSD 估计,nfft 是偶数,则 w 在 [0,π] 区间,如果 nfft 是奇数,则在 [0,π)。如果 pxx 是一个双边的 PSD 估计,w 在 [0,2π)。
pxx, f = ty_pwelch(___, fs) 返回一个频率向量 f,单位为每单位时间的周期。采样率 fs,是每单位时间的采样数。如果时间的单位是秒,那么 f 的单位是周期/秒(Hz)。
- 对于实值信号,当 nfft 为偶数时,f 在 [0,fs/2];当 nfft 为奇数时,f 在 [0,fs/2);
- 对于复值信号,f 在 [0,fs);
- fs 必须是 ty_pwelch 的第五个输入。要输入一个采样率,并仍然使用前面的可选参数的默认值,请将这些参数指定为空。
pxx, w = ty_pwelch(x, window, noverlap, w) 返回在向量 w 中指定的归一化频率下的双边 Welch PSD 估计值。向量 w 必须至少包含两个元素,否则函数将其解析为 nfft。
pxx, f = ty_pwelch(x, window, noverlap, f, fs) 返回在向量 f 中指定的频率下的双边 Welch PSD 估计值。向量 f 必须至少包含两个元素,否则函数将其解析为 nfft。
f 中的频率是指单位时间内的周期。采样率 fs,是指单位时间内的采样数。如果时间的单位是秒,那么 f 的单位是周期/秒(Hz)。
___ = ty_pwelch(___; freqrange = String) 返回由 freqrange 指定的频率范围内的 Welch PSD 估计值。freqrange 的有效选项是:"onesided"、 "twosided" 或 "centered"。
___ = ty_pwelch(___; trace = String) 如果 trace 被指定为 "maxhold",则返回最大保持谱估计值;如果 trace 被指定为 "minhold",则返回最小保持谱估计值。
___, pxxc = ty_pwelch(___; conflevel = Real) 返回 pxxc 中 PSD 估计值的 conflevel × 100% 置信区间。
___ = ty_pwelch(___; stype = String) 如果 stype 被指定为 "psd",则返回 PSD 估计值;如果 stype 被指定为 "power",则返回功率谱。
ty_pwelch(___; plotfig = true) 绘制 Welch PSD 估计值。
# 示例
使用默认输入进行韦尔奇估计
获得输入信号的 Welch PSD 估计,该信号由角频率为 π/4 rad/sample 的离散时间正弦波与加性 N(0,1) 白噪声组成。
创建一个角频率为 π/4 rad/sample 的正弦波,带有加性 N(0,1) 白噪声。重置随机数发生器以获得可重复的结果。该信号的长度为
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
n = 0:319
x = cos.(pi / 4 .* n) + randn(rng, size(n))
使用默认的 Hamming 窗口和 DFT 长度获得 Welch PSD 估计。默认段长为 71 个样本,DFT 长度为 256 个点,产生的频率分辨率为 2π/256 rad/sample。因为信号是实值的,所以周期图是单边的,有 256/2+1 个点。绘制 Welch PSD 估计图。
pxx, w = ty_pwelch(x; plotfig=true)
重复计算。
将信号分为长度为
的部分。这个操作相当于把信号分成尽可能长的几段,以获得尽可能接近但不超过 8 段,并有 50% 的重叠; 用汉明窗为各段加窗;
指定相邻连续部分之间有 50% 的重叠;
为了计算 FFT,使用
点,其中 。
验证这两种方法得到的结果是相同的。
Nx = length(x)
nsc = floor(Int, Nx / 4.5)
nov = floor(Int, nsc / 2)
nff = max(256, 2^nextpow2(nsc))
h = hamming(nsc)
t, = ty_pwelch(x, h, nov, nff)
maxerr = maximum(abs.(abs.(pxx) - abs.(t)))
maxerr = 0.0
将信号分成 8 段等长,段与段之间重叠 50%。指定与上一步相同的 FFT 长度。计算 Welch(韦尔奇)PSD 估计,并验证它给出的结果与前两个过程相同。
ns = 8
ov = 0.5
lsc = floor(Int, Nx / (ns - (ns - 1) * ov))
t, = ty_pwelch(x, lsc, floor(ov * lsc), nff)
maxerr = maximum(abs.(abs.(t) - abs.(pxx)))
maxerr = 0.0
使用指定段长度进行韦尔奇估计
获得输入信号的 Welch PSD 估计,该信号由角频率为 π/3 rad/sample 的离散时间正弦波与加性 N(0,1) 白噪声组成。
创建一个角频率为 π/3 rad/sample 的正弦波,带有加性 N(0,1) 白噪声。重置随机数发生器以获得可重复的结果。该信号有 512 个样本。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
n = 0:511
x = cos.(pi / 3 * n) + randn(rng, (size(n)))
获得 Welch PSD 估计,将信号分为 132 个样本长度的片段。信号段被乘以长度为 132 个样本的汉明窗。没有指定重叠样本的数量,所以它被设定为 132/2 = 66。DFT 长度为 256 点,产生的频率分辨率为 2π/256 rad/sample。因为信号是实值的,所以 PSD 估计是单边的,有 256/2+1 = 129 个点。将 PSD 绘制成归一化频率的函数。
segmentLength = 132
pxx, w = ty_pwelch(x, segmentLength)
plot(w / pi, 10 * log10.(pxx))
xlim([0, 1])
xlabel("ω / π")

指定段重叠进行韦尔奇估计
获得输入信号的 Welch PSD 估计,该信号由角频率为 π/4 rad/sample 的离散时间正弦波与加性 N(0,1) 白噪声组成。
创建一个角频率为 π/4 rad/sample 的正弦波,带有加性 N(0,1) 白噪声。重置随机数发生器以获得可重复的结果。该信号的长度为 320 个样本。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
n = 0:319
x = cos.(pi / 4 * n) + randn(rng, size(n))
获得 Welch PSD 估计,将信号分成 100 个样本长度的片段。信号段与长度为 100 个样本的汉明窗相乘。重叠的样本数为 25。DFT 长度为 256 点,频率分辨率为 2π/256 rad/sample。因为信号是实值的,所以 PSD 估计是单边的,有 256/2+1 个点。
segmentLength = 100
noverlap = 25
pxx, = ty_pwelch(x, segmentLength, noverlap)
plot(10 * log10.(pxx))

指定 DFT 长度进行韦尔奇估计
获得输入信号的 Welch PSD 估计,该信号由角频率为 π/4 rad/sample 的离散时间正弦波与加性 N(0,1) 白噪声组成。
创建一个角频率为 π/4 rad/sample 的正弦波,带有加性 N(0,1) 白噪声。重置随机数发生器以获得可重复的结果。该信号的长度为 320 个样本。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
n = 0:319
x = cos.(pi / 4 * n) + randn(rng, size(n))
获得 Welch PSD 估计值,将信号分为 100 个样本长度的片段。使用默认的 50% 的重叠率。指定 DFT 长度为 640 点,这样 π/4 rad/sample 的频率就对应于 DFT 的间隔 bin(bin 81)。因为信号是实值的,所以 PSD 估计是单边的,有 640/2+1 个点。
segmentLength = 100
nfft = 640
pxx, = ty_pwelch(x, segmentLength, [], nfft)
plot(10 * log10.(pxx))
xlabel("rad/sample")
ylabel("dB / (rad/sample)")

频率为赫兹信号的韦尔奇 PSD 估计
创建一个由 100 赫兹正弦波组成的加性 N(0,1) 白噪声的信号。重置随机数发生器以获得可重复的结果。采样率为 1 kHz,信号持续时间为 5 秒。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
fs = 1000
t = 0:(1 / fs):(5 - 1 / fs)
x = cos.(2 * pi * 100 * t) + randn(rng, size(t))
获得前面信号的 Welch 重叠段平均 PSD 估计。使用 500 个样本的段长,300 个重叠的样本。使用 500 个 DFT 点,使 100 Hz 直接落在一个 DFT 间隔 bin 上。输入采样率,输出一个以 Hz 为单位的频率向量。把结果画出来。
pxx, f = ty_pwelch(x, 500, 300, 500, fs)
plot(f, 10 * log10.(pxx))
xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")

最大保持和最小保持频谱
创建一个由三个加噪的正弦波和一个啁啾声组成的信号,以 200 kHz 采样,持续 0.1 秒。正弦波的频率为 1 kHz、10 kHz 和 20 kHz。这些正弦波具有不同的振幅和噪声水平。无噪音的啁啾声的频率从 20 kHz 开始,在采样过程中线性增加到 30 kHz。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(1234)
Fs = 200e3
Fc = [1, 10, 20] * 1e3
Ns = 0.1 * Fs
t = collect(transpose((0:(Ns - 1)) / Fs))
x =
[1 1 / 10 10] * sin.(2 * pi * Fc * t) +
[1 / 200 1 / 2000 1 / 20] * randn(rng, 3, Int(Ns))
x = vec(x + chirp(t, 20e3, t[end], 30e3))
计算 Welch PSD 估计值以及信号的最大保持和最小保持频谱。把结果画出来。
pxx, f = ty_pwelch(x, [], [], [], Fs)
pmax, = ty_pwelch(x, [], [], [], Fs; trace="maxhold")
pmin, = ty_pwelch(x, [], [], [], Fs; trace="minhold")
plot(f, pow2db(pxx))
hold("on")
plot(f, pow2db([pmax pmin]), ":")
hold("off")
xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")
legend("pwelch", "maxhold", "minhold")
pxx, f = ty_pwelch(x, [], [], [], Fs; freqrange="centered", stype="power")
pmax, = ty_pwelch(x, [], [], [], Fs; trace="maxhold", freqrange="centered", stype="power")
pmin, = ty_pwelch(x, [], [], [], Fs; trace="minhold", freqrange="centered", stype="power")
plot(f, pow2db(pxx))
hold("on")
plot(f, pow2db([pmax pmin]), ":")
hold("off")
xlabel("Frequency (Hz)")
ylabel("Power (dB)")
legend("pwelch", "maxhold", "minhold")

95% 置信度的上限和下限
这个例子说明了韦尔奇重叠段平均法(WOSA)PSD 估计值的置信度界限的使用。虽然不是统计学意义的必要条件,但在 Welch 的估计中,置信度下限超过周围 PSD 估计的置信度上限的频率清楚地表明了时间序列中的重大振荡。
创建一个由 100 Hz 和 150 Hz 正弦波在加性白 N(0,1) 噪声中叠加而成的信号。两个正弦波的振幅为 1,采样率为 1 kHz。重置随机数发生器以获得可重复的结果。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
fs = 1000
t = 0:(1 / fs):(1 - 1 / fs)
x = cos.(2 * pi * 100 * t) + sin.(2 * pi * 150 * t) + randn(rng, size(t))
获得具有 95% 置信度界限的 WOSA 估计值。设置段的长度等于 200,段的重叠度为 50%(100 个样本)。绘制 WOSA PSD 估计值和置信区间图,并放大 100 和 150 Hz 附近的感兴趣的频率区域。
L = 200
noverlap = 100
pxx, f, pxxc = ty_pwelch(x, hamming(L), noverlap, 200, fs; conflevel=0.95)
plot(f, 10 * log10.(pxx))
hold("on")
plot(f, 10 * log10.(pxxc), "-.")
hold("off")
xlim([25 250])
xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")
title("Welch Estimate with 95%-Confidence Bounds")
在 100 和 150 Hz 附近的置信度下限明显高于 100 和 150 Hz 附近以外的置信度上限。
以直流为中心的功率谱
创建一个由 100 Hz 正弦波组成的加性 N(0,1/4) 白噪声的信号。重置随机数发生器以获得可重复的结果。采样率为 1 kHz,信号持续时间为 5 秒。
using TySignalProcessing
using TyMath
using TyPlot
rng = MT19937ar(5489)
fs = 1000
t = 0:(1 / fs):(5 - 1 / fs)
noisevar = 1 / 4
x = cos.(2 * pi * 100 * t) + sqrt(noisevar) * randn(rng, size(t))
使用韦尔奇的方法获得直流中心功率谱。使用段长为 500 个样本,有 300 个重叠的样本,DFT 长度为 500 点。画出结果。
pxx, f = ty_pwelch(x, 500, 300, 500, fs; freqrange="centered", stype="power")
plot(f, 10 * log10.(pxx))
xlim([-500 500])
ylim([-40 -5])
xlabel("Frequency (Hz)")
ylabel("Magnitude (dB)")
grid("on")
你可以看到,在 -100 和 100 Hz 的功率接近于振幅为 1 的实值正弦波的预期功率 1/4,与 1/4 的偏差是由于加性噪声的影响。
多通道信号的韦尔奇功率谱密度估计
生成由加性 N(0,1) 高斯白噪声中的三个正弦曲线组成的多通道信号的 1024 个样本。正弦曲线的频率分别为 π/2、π/3 和 π/4 rad/sample。使用韦尔奇方法估计信号的 PSD 并绘制它。
using TySignalProcessing
N = 1024
n = 0:(N - 1)
w = pi ./ [2 3 4]
x = cos.(n * w) + randn(length(n), 3)
ty_pwelch(x; plotfig=true)

# 输入参数
x - 输入信号向量 | 矩阵
输入信号,指定为一个行或列向量,或一个矩阵。如果 x 是一个矩阵,那么它的列被视为独立通道。
数据类型: Float
复数支持: 是
window - 窗口整数 | 向量 | [ ]
窗口,指定为一个行或列的向量或一个整数。
- 如果 window 是一个向量,ty_pwelch 将 x 划分为长度等于窗口长度的重叠段,然后将每个信号段与窗口中指定的向量相乘;
- 如果 window 是一个整数,ty_pwelch 被分成长度等于整数值的段,并使用一个等长的汉明窗。
如果 x 的长度不能精确地划分为具有 noverlap 数量的重叠样本的整数段,x 会被相应地截断。如果你指定窗口为空,则使用默认的汉明窗口来获得 x 的八个段,和 noverlap 个重叠样本。
数据类型: Int | Float
noverlap - 重叠的样本数正整数 | [ ]
重叠的样本数,指定为一个小于窗口长度的正整数。如果省略 noverlap 或将 noverlap 指定为空,则使用一个值来获得段之间 50% 的重叠。
数据类型: Int | Float
nfft - DFT 点的数量max(256,2^nextpow2(length(window))) (默认) | 整数 | [ ]
DFT 点的数量,指定为一个正整数。
- 对于实值输入信号 x,如果 nfft 是偶数,PSD 估计值 pxx 的长度为 (nfft/2+1),如果 nfft 是奇数,则长度为(nfft+1)/2;
- 对于一个复值的输入信号 x,PSD 估计值总是有 nfft 的长度。如果 nfft 被指定为空,则使用默认的 nfft。
如果 nfft 大于段长,数据将被填充为零。如果 fft 小于段的长度,则对段进行处理,使其长度等于 fft。
数据类型: Int | Float
fs - 采样率正标量
采样率,指定为一个正标量。采样率是每单位时间的采样数。如果时间的单位是秒,那么采样率的单位是 Hz。
数据类型: Float | Int
w - 归一化的频率向量
归一化的频率,指定为至少有两个元素的行或列向量。归一化频率的单位是 rad/sample。
数据类型: Float | Int
f - 频率向量
频率,指定为一个至少有两个元素的行或列向量。频率的单位是每单位时间的周期。单位时间是由采样率 fs 指定的。如果 fs 的单位是 samples/second,那么 f 的单位就是 Hz。
数据类型: Float | Int
# 名称-值参数
指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。
示例: ty_pwelch(x; freqrange="twosided", conflevel=0.9, trace="minhold", plotfig=true)
freqrange - PSD 估计的频率范围"onesided" | "twosided" | "centered"
PSD 估计的频率范围,指定为 "onesided"、"twosided" 或 "centered" 中的一个。对于实值信号,默认为 "onesided",对于复值信号,默认为 "twosided"。每个选项对应的频率范围是
"onesided" - 返回实值输入信号 x 的单边 PSD 估计值;
如果 nfft 是偶数,pxx 的长度为 nfft/2 + 1,并在区间 [0,π] rad/sample 上计算;
如果 nfft 是奇数,pxx 的长度是 (nfft + 1)/2,区间是 [0,π] rad/sample。当 fs 被选择性地指定时,对于偶数和奇数长度的 nfft,相应的区间分别为 [0,fs/2] cycles/unit 时间和 [0,fs/2) cycles/unit 时间。
"twosided" - 返回实值或复值输入 x 的双边 PSD 估计值。当 fs 被选择性地指定时,该区间为 [0,fs] cycles/unit 时间;
"centered" - 返回实值或复值输入 x 的中心双边 PSD 估计值。在这种情况下,pxx 的长度为 nfft。
对于偶数长度 nfft 的 pxx,在区间 (-π,π) rad/sample 上计算;
对于奇数长度 nfft 的 pxx,(-π,π) rad/sample计算。当 fs 被选择性地指定时,对于偶数和奇数长度的 nfft,相应的区间分别为 (-fs/2, fs/2] cycles/unit 时间和 (-fs/2, fs/2) cycles/unit 时间。
数据类型: String
stype - 功率谱的缩放"psd" (默认) | "power"
功率谱的缩放,指定为 "psd" 或 "power" 之一。省略频谱类型或指定 "psd" 将返回功率谱密度。指定 "power" 通过窗口的等效噪声带宽缩放 PSD 的每个估计。使用 "power" 选项可获得每个频率的功率估计值。
数据类型: String
trace - 跟踪模式"mean"(默认)| "maxhold" | "minhold"
跟踪模式,指定为 "mean"、"maxhold" 或 "minhold" 之一。默认值是 "mean"。
"mean" - 返回每个输入通道的韦尔奇频谱估计。ty_pwelch 通过平均所有分段的功率谱估计来计算每个频率间隔的韦尔奇频谱估计。
"maxhold" - 返回每个输入通道的最大保持频谱。ty_pwelch 通过保持所有部分功率谱估计值中的最大值来计算每个频率间隔的最大保持频谱。
"minhold" - 返回每个输入通道的最小保持频谱。ty_pwelch 通过保持所有部分功率谱估计值中的最小值来计算每个频率间隔的最小保持频谱。
数据类型: String
conflevel - PSD 估计的置信区间0.95(默认)| (0,1) 范围内的标量
真实 PSD 的覆盖概率,指定为范围为 (0,1) 的标量。输出 pxxc,包含真实 PSD 的 conflevel × 100% 区间估计的下限和上限。
数据类型: Float
plotfig - 绘图选项true | false
绘图选项,指定为 true 或 false。 当指定为 true 时绘制图像,否则不绘制。
数据类型: Bool
# 输出参数
pxx - PSD 估计值向量 | 矩阵
PSD 估计值,以实值、非负的列向量或矩阵形式返回。pxx 的每一列是 x 的相应列的 PSD 估计值。PSD 估计值的单位是每单位频率的时间序列数据的幅度平方。
例如,如果输入数据的单位是伏特,PSD 估计的单位是每单位频率的平方伏特。对于以伏特为单位的时间序列,如果你假设电阻为 1 Ω,并指定采样率为赫兹,那么 PSD 估计值的单位是瓦特/赫兹。
数据类型: Float
w - 归一化的频率向量
归一化的频率,作为实值列向量返回。
- 如果 pxx 是单边 PSD 估计,如果 nfft 是偶数,w 在区间 [0,π],如果 nfft 是奇数,则在 [0,π);
- 对于以直流为中心的 PSD 估计,如果 nfft 为偶数,则 w 在区间 [0,2π];如果 nfft 为奇数,则 w 在区间 (-π,π)。
数据类型: Float
f - 周期性频率向量
周期性频率,作为一个实值列向量返回。
- 对于单边 PSD 估计,当 nfft 为偶数时,f 在区间 [0,fs/2],当 nfft 为奇数时在 [0,fs/2)。对于双边 PSD 估计,f 在区间 [0,fs);
- 对于以直流为中心的 PSD 估计,f 在区间 (-fs/2, fs/2),对于偶数长度的 nfft cycles/unit 时间,对于奇数长度的 nfft,(-fs/2, fs/2) cycles/unit 时间。
数据类型: Float
pxxc - 置信界限矩阵
置信界限,以实值元素的矩阵形式返回。矩阵的行大小等于 PSD 估计值 pxx 的长度。pxxc 的列数是 pxx 的两倍。奇数列包含置信区间的下限,偶数列包含上限。
因此,pxxc[m, 2*n-1] 是置信区间的下限,pxxc[m, 2*n] 是对应于估计值 pxx[m, n] 的置信区间上限。置信区间的覆盖概率是由概率输入的值决定的。
数据类型: Float
# 详细信息
Welch 的重叠段平均谱估计
周期图不是广义平稳过程的实功率谱密度的一致估计。韦尔奇减少周期图方差的技术将时间序列分成多个部分,通常是重叠的。
Welch 的方法计算每个段的修正周期图,然后对这些估计进行平均以产生功率谱密度的估计。因为该过程是广义平稳的,并且 Welch 的方法使用时间序列不同部分的 PSD 估计,所以修改后的周期图表示实 PSD 的近似不相关估计,并且平均减少了可变性。
这些段通常乘以窗函数,例如汉明窗,因此 Welch 的方法相当于平均修正周期图。因为这些段通常重叠,所以在一个段中由窗口逐渐变细的段的开始和结束处的数据值出现在远离相邻段的末端的地方。这可以防止窗口化导致的信息丢失。
# 参考文献
[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.
[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.