小编Nim*_*ser的帖子

如何使用SciPy/Numpy过滤/平滑?

我试图过滤/平滑从采样频率为50 kHz的压力传感器获得的信号.示例信号如下所示:

在此输入图像描述

我想在MATLAB中获得由黄土获得的平滑信号(我没有绘制相同的数据,值不同).

在此输入图像描述

我使用matplotlib的psd()函数计算了功率谱密度,功率谱密度也在下面提供:

在此输入图像描述

我尝试使用以下代码并获得过滤后的信号:

import csv
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.signal import butter, lfilter, freqz

def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a

def butter_lowpass_filter(data, cutoff, fs, order=5):
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = lfilter(b, a, data)
    return y

data = np.loadtxt('data.dat', skiprows=2, delimiter=',', unpack=True).transpose()
time = data[:,0]
pressure = data[:,1]
cutoff …
Run Code Online (Sandbox Code Playgroud)

python filtering numpy scipy smoothing

18
推荐指数
1
解决办法
3万
查看次数

标签 统计

filtering ×1

numpy ×1

python ×1

scipy ×1

smoothing ×1