SciPy 信號處理


章節


scipy.signal模塊專門用於信號處理。

重新采樣

scipy.signal.resample()函數使用FFT將信號重采樣成n個點。

示例

import numpy as np

t = np.linspace(0, 5, 100)
x = np.sin(t)

from scipy import signal
x_resampled = signal.resample(x, 25)

import matplotlib.pyplot as plt
plt.plot(t, x)
plt.plot(t[::4], x_resampled, 'ko')

# plt.savefig('./sig1-1.png') # 保存要顯示的圖片
plt.show()

輸出

scipy signal 圖1

去除趨勢

scipy.signal.detrend()函數從信號中去除線性趨勢。

示例

import numpy as np

t = np.linspace(0, 5, 100)
x = t + np.random.normal(size=100)

from scipy import signal
x_detrended = signal.detrend(x)

import matplotlib.pyplot as plt
plt.plot(t, x) 
plt.plot(t, x_detrended) 

# plt.savefig('./sig2-1.png') # 保存要顯示的圖片
plt.show()

輸出

scipy signal 圖2

濾波

對於非線性濾波,scipy.signal模塊中提供了中值濾波scipy.signal.medfilt(), 維納濾波scipy.signal.wiener()。濾波的使用,可參考圖像處理章節,不再贅述。

頻譜分析

  • scipy.signal.spectrogram() 計算連續時間窗上的頻譜圖
  • scipy.signal.welch() 計算功率譜密度(PSD)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM