スレピアンウィンドウと一般化されたガウスウィンドウに関するいくつかの質問


10

私は scipy.signalのすべてのウィンドウ関数のドキュメントを追加しようとしていますが、これまで聞いたことのないSlepian(DPSSと同じ?)ウィンドウとGeneralized Gaussianウィンドウが表示されません。

p一般化されたガウスとwidthスレピアンには、あるタイプの形状パラメーターである2つの変数があります。(sigシグマ、標準偏差のように見えます。)

2つの質問:

  1. 私がリバースエンジニアリングして推測する代わりに、これらの変数が何と呼ばれ、何をしているのかを誰かが説明できますか?

  2. これらのウィンドウが何に役立つか、またはどこで使用されるかを説明できますか?

 

def general_gaussian(M, p, sig, sym=True):
    """Return a window with a generalized Gaussian shape.

    The Gaussian shape is defined as ``exp(-0.5*(x/sig)**(2*p))``, the
    half-power point is at ``(2*log(2)))**(1/(2*p)) * sig``.

    """
    if M < 1:
        return np.array([])
    if M == 1:
        return np.ones(1, 'd')
    odd = M % 2
    if not sym and not odd:
        M = M + 1
    n = np.arange(0, M) - (M - 1.0) / 2.0
    w = np.exp(-0.5 * (n / sig) ** (2 * p))
    if not sym and not odd:
        w = w[:-1]
    return w

def slepian(M, width, sym=True):
    """Return the M-point slepian window.

    """
    if (M * width > 27.38):
        raise ValueError("Cannot reliably obtain slepian sequences for"
              " M*width > 27.38.")
    if M < 1:
        return np.array([])
    if M == 1:
        return np.ones(1, 'd')
    odd = M % 2
    if not sym and not odd:
        M = M + 1

    twoF = width / 2.0
    alpha = (M - 1) / 2.0
    m = np.arange(0, M) - alpha
    n = m[:, np.newaxis]
    k = m[np.newaxis, :]
    AF = twoF * special.sinc(twoF * (n - k))
    [lam, vec] = linalg.eig(AF)
    ind = np.argmax(abs(lam), axis=-1)
    w = np.abs(vec[:, ind])
    w = w / max(w)

    if not sym and not odd:
        w = w[:-1]
    return w

可能な一致:

nipyのdpss_windows関数NW、「2NW = BW * f0 = BW * N / dtに対応するが、dtを1とする標準化された半帯域幅」を使用します。

MATLABのDPSS用途time_halfbandwidthこれは、同じウィンドウですか?とtime_halfbandwidth同じwidthですか?

ωc

一般化された正規分布にはβ(2倍に等しいp?)があり、これは形状パラメーターと呼ばれ、β= 1の正規分布とβ= 2のラプラス分布です。


FWIW私は、DPSSがカイザーウィンドウと同じ(または非常に似ている)ことを覚えているようです。申し訳ありませんが、私が入手したすべてです。:-)
Spacey

@Mohammad:カイザーウィンドウはDPSSの近似値です。真のDPSSは計算コストが高いためです。 en.wikipedia.org/wiki/Window_function#Kaiser_windows
endolith

2
DPSSは制約付き最適化で設計されたウィンドウであり、制約はメインローブの許容できる幅です。実際には、固定されたメインローブエネルギーと比較して、メインローブ(サイドローブ)の外側のエネルギーを最小限に抑えます。私は家に良い本を持っているので(出張中の出張)、レビューするときに投稿に値するより良い答えを作成できますが、それはその趣旨です。
ブライアン

回答:


4

スレピアン列は関数のファミリーです。ほとんどのアルゴリズムは、特定のNWに対して2 * NW-1シーケンスを一度に計算します。Nはシーケンスのポイント数で、Wは特定のスレピアンシーケンスのフーリエ変換の周波数領域でメインローブの幅の半分を決定します。通常、信号処理には3または4のNWを使用します。

NWNWN

定常時系列のパワースペクトルを推定する場合、DPSSは、使用する必要があるウィンドウのセットです。

一般化されたガウス関数は、pパラメーターに応じて、次第に累乗されたガウスのような関数を返します。pを次第に累乗するように上げると、一般化されたガウス分布は時間領域で狭くなります。ガウシアンの優れた特性は、それが独自のフーリエ変換であり、不確定性原理に関する制限を達成する関数であることです。ガウス関数は、短時間のフーリエ変換またはスペクトログラムを非定常時系列の時変パワースペクトルの推定量として計算する場合に役立ちます。


「ガウシアンの優れた特性は、それが独自のフーリエ変換であることです」しかし、それはにのみ当てはまりp = 1ますね。
内部石

eaバツ2pcos2πkバツdバツ

1

GGを反駁する1つの例は、それ自体の変換です。p = 0.5は、2a /(s ^ 2 + a ^ 2)の変換を持つ通常の連続した指数を与えます。

DCブロックはあります。周波数領域ではFdcx(w)= 1-F(w)。これにより、DCの近くにリジェクトが配置され、Near-DCが現在の通過帯域で最適化されなくなります。ですから、私はこれにDolphを使用して、広帯域通過帯域を等しいリップルにするだけです。

これは、インパルスから時間領域で元のウィンドウ関数を差し引いたものです。インパルスの大きさは?シーケンスの合計を強制的にゼロにする必要があります。

警告、偶数長のシーケンスはナイキスト周波数でゼロを強制するので、それを回避する必要があります。


-1

GGのフーリエ変換もガウス型です。畳み込み定理を使用して、FT(Gaussian \ times Gaussian)= FT(Gaussian)\ conv FT(Gaussian)= Gaussian \ conv Gaussian = Gaussian。お役に立てば幸いです。


これは一般的なガウスですが、通常のガウスではありません。それはそれ自身の変形ではありません。画像を参照してください。docs.scipy.org/doc/scipy/reference/generated/...
endolith
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.