提供一个基于Python的直达波去除代码
import numpy as np
from scipy import signal
# Generate a noisy signal to be filtered.
t = np.linspace(0, 5, 500, endpoint=False)
x = np.cos(2 * np.pi * 5 * t) + 2 * np.random.randn(t.size)
# Design an FIR filter and apply it to the signal.
b = signal.firwin(80, 0.5) # Lowpass filter with cutoff at 0.5 (normalized frequency). 80为滤波器的长度,0-1之间的值,越大则截止频率越低。 可以改变b中的值来调整滤波效果。 改变80也可以改变滤波效果。 这里是80个样本点的低通滤波器,截止频率为0-1之间的0-5。 截止频率越高,则去直流能力强,但会同时损失信号部分信息。 反之亦然。 可以根据实际情况来定制滤波器大小和截止频率来得出最优化方案。
# Apply the filter to the signal and plot both the original and filtered signals for comparison: 然后将该过滤器应用于信号并对原始信号和过滤后的信号进行对比图形化显示 y = signal.filtfilt(b, [1], x) # filtfilt函数是一个前向后向卷积函数(forward-backward convolution function ) 运用该函数使得所有时段上都能够得到一样的相应
import matplotlib . pyplot as plt
plt . figure ()
plt . plot ( t , x , 'b' , alpha = 0 . 75 ) # Plot the original signal in blue with alpha set to 75 % transparency
plt . plot ( t , y , 'k' ) # Plot the filtered signal in black
plt . xlabel ( 'Time [sec]' ) # Label the axes and provide a title
plt . ylabel ( 'Amplitude' ) # Label the axes and provide a title
plt . title ( 'Original Signal vs Filtered Signal' ) # Label the axes and provide a title
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!