M 点滑动平均 Python 实现
生活随笔
收集整理的這篇文章主要介紹了
M 点滑动平均 Python 实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
1. 需要的 Python 庫
2. 一些主要的信號
(1)原始信號
(2)噪聲信號
(3)對原始信號加噪
(4)進行 M 點平均
3. 對系統的探究
(1)單位沖擊響應
(2)頻響
對于該滑動平均的具體介紹以及 Matlab 實現方法可以參考下面的這篇文章
M 點滑動平均 Matlab 實現
1. 需要的 Python 庫
Python 的好處就在于大量的庫文件,使用它們可以很好的進行工程處理,甚至與 Matlab 相比擬,在這次實現中,我們主要需要的是畫圖、傅里葉變換等操作
import numpy as np import matplotlib.pyplot as plt import scipy.fftpack2. 一些主要的信號
(1)原始信號
隨便生成一個如下的正弦信號:
Fs = 1 size = 100 n = np.arange(0, size) / Fs a = np.sin(0.1 * np.pi * n) plt.title("Original Signal") plt.xlabel("n") plt.ylabel("a") plt.stem(n, a) # plt.savefig("E:\Python\Mpoint\ Original Signal") #生成的圖片進行保存 plt.show() #展示圖片得到的圖片如下:
(2)噪聲信號
b = 0.1 * np.random.randn(size) #生成 size 長度的噪聲信號 plt.title("Noise") plt.xlabel("n") plt.ylabel("b") plt.stem(n, b) # plt.savefig("E:\Python\Mpoint\ Noise Signal") plt.show()得到的噪聲信號如下:
(3)對原始信號加噪
簡單的信號加法操作
c = a + b plt.title("Signal added noise") plt.xlabel("n") plt.ylabel("c") plt.stem(n, c) # plt.savefig("E:\Python\Mpoint\ Signal added noise") plt.show()得到如下信號:
(4)進行 M 點平均
s = np.zeros(100) k = np.arange(0, size) for i in k:for j in np.arange(0, 4): # M 為 5 的滑動平均s[k] = s[k] + c[k - j]s[k] = 1 / 5 * s[k] plt.title("Signal after filtering") plt.xlabel("n") plt.ylabel("d") plt.stem(k, s) # plt.savefig("E:\Python\Mpoint\ Signal after filtering") plt.show()得到滑動平均后的信號如下:
3. 對系統的探究
(1)單位沖擊響應
u = np.zeros(100) l = {0, 1, 2, 3, 4} #其實就是 u[n] - u[n - 5],再取 1/M for x in l:u[x] = 1 plt.title("Unit impulse response") plt.xlabel("n") plt.ylabel("u") plt.stem(k, u) # plt.savefig("E:\Python\Mpoint\ Unit impulse response") plt.show()(2)頻響
h = scipy.fftpack.fft(u) # 頻響就是對單位沖擊響應的傅里葉變化 plt.title("Frequency response") plt.xlabel("n") plt.ylabel("h") plt.plot(abs(h)) # plt.savefig("E:\Python\Mpoint\ Frequency response") plt.show()?
?
總結
以上是生活随笔為你收集整理的M 点滑动平均 Python 实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: M-point moving-avera
- 下一篇: Python 绘图库 Matplotli