ฉันกำลังพยายามเพิ่มเอกสารสำหรับฟังก์ชั่นหน้าต่างทั้งหมดใน scipy.signal และฉันติดอยู่ที่Slepian (เหมือนกับ DPSS?) และหน้าต่างเกาส์ทั่วไปที่ฉันไม่เคยได้ยินมาก่อน
มีตัวแปรสองตัวที่เป็นพารามิเตอร์รูปร่างของบางประเภทp
ในแบบเกาส์ทั่วไปและwidth
ใน Slepian ( sig
ดูเหมือนจะเป็นซิกม่า, ส่วนเบี่ยงเบนมาตรฐาน)
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
การแข่งขันที่เป็นไปได้:
ฟังก์ชัน dpss_windows ของ nipyใช้NW
"แบนด์วิดท์ครึ่งมาตรฐานที่สอดคล้องกับ 2NW = BW * f0 = BW * N / dt แต่มี dt เป็น 1"
dpss ของ Matlabใช้time_halfbandwidth
นี่เป็นหน้าต่างเดียวกันหรือไม่ เป็นtime_halfbandwidth
เช่นเดียวกับwidth
?
คำจำกัดความ DPSS นี้มี "ความถี่ของการตัดพูหลักที่ต้องการเป็นเรเดียนต่อวินาที"
การแจกแจงแบบปกติทั่วไปมีβ (เท่ากับสองเท่าp
?) ซึ่งเรียกว่าพารามิเตอร์รูปร่างโดยมีการแจกแจงปกติสำหรับβ = 1 และการแจกแจงแบบ Laplace สำหรับβ = 2