Как реализовать фильтр БаттервортаPython

Программы на Python
Ответить
Anonymous
 Как реализовать фильтр Баттерворта

Сообщение Anonymous »

Я пытаюсь реализовать фильтр Баттерворта с помощью Python
Данные взяты из CSV-файла, который называется Samples.csv и выглядит следующим образом

Код: Выделить всё

998,4778415
1009,209592
1006,619094
1001,785406
993,9426543
990,1408991
992,736118
995,8127334
...
В столбце указана евклидова норма. Диапазон данных от 0 до 1679,286158, 1838 строк.
Это код, который я использую:

Код: Выделить всё

from scipy.signal import filtfilt
from scipy import stats

import csv
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import scipy
def plot():
data=pd.read_csv('Samples.csv',sep=";", decimal=",")
sensor_data=data[['Euclidian Norm']]
sensor_data=np.array(sensor_data)

time=np.linspace(0,1679.286158,1838)
plt.plot(time,sensor_data)
plt.show()

filtered_signal=bandPassFilter(sensor_data)
plt.plot(time,sensor_data)
plt.show()

def bandPassFilter(signal):
fs = 4000.0
lowcut=20.0
highcut=50.0

nyq=0.5*fs
low=lowcut/nyq
high=highcut/nyq

order =2

b,a=scipy.signal.butter(order,[low,high],'bandpass',analog=False)

y=scipy.signal.filtfilt(b,a,signal,axis=0)

return(y)

plot()

Моя проблема в том, что в моих данных ничего не меняется. Он не фильтрует мои данные. График отфильтрованных данных такой же, как и исходные данные. Кто-нибудь знает, что может быть не так?
Первый график — это исходные данные, а второй график — это отфильтрованный график, который для меня выглядит как один и тот же график.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/740 ... rth-filter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»