2016-11-24 87 views

回答

2

您需要乘以您的信號與矩形窗口(時間有限窗口一般)。 scipy有一個信號處理模塊,scipy.signal它可以幫助你實現許多這樣的操作。

在這種情況下,您可以使用scipy.signal.boxcar創建一個矩形窗口。或者,你可以嘗試從scipy.signal.get_window不同的窗口。在此之後,您可以將此信號與此窗口相乘以獲得最終結果。

這裏是一個示例代碼,

import numpy as np 
import scipy.signal 
# signal 
input = np.random.rand(100) 
window = scipy.signal.boxcar(10) 
# Pad the window to make its size equal to signal size 
# I'm assuming your peak is between sample 45 and 55 
window = np.lib.pad(window, (45, 45), 'constant') 
output = input*window 

在你想做到這一點在頻域的情況下,需要通過適當的低通濾波器來傳遞你的信號。 (假設你的峯值在頻域中)。這裏有一個非常詳細的答案,以幫助您實現這一點巴特沃思濾波器 - Creating lowpass filter in SciPy - understanding methods and units

+0

峯值位於我想過濾的時域中。 –

+0

這應該不是太難,你只需要時間限制信號。你的信號是什麼格式? – martianwars

+0

添加了一個示例代碼,假設你的信號是一個簡單的'numpy'數組 – martianwars