Denoising очень шумные и большие данные осциллографа - PullRequest
0 голосов
/ 12 октября 2018

У меня есть данные УВЧ с 100 миллионами точек данных и широкой полосой фонового шума (около 5 мВ).Есть ли способ отфильтровать этот шум?Из-за большого количества точек данных каждая функция фильтра, которую я пытаюсь реализовать, просто сглаживает линии данных, включая шум.В результате вы не можете видеть никакого эффекта фильтра, если вы уменьшаете масштаб.

Пример фильтра:

b, a = scipy.signal.butter(15, 0.1)
y = scipy.signal.filtfilt(b,a, df[1].values)
df2 = pd.DataFrame(y, index=df.index)

К сожалению, я не знаю, как предоставить вам высококачественные данные, которые мне показывают при plt.show().Там я могу увеличить каждую точку данных.Когда я сохраняю график в изображение, качество падает до 600 точек на дюйм.

UHF-файл: https://ufile.io/hhkeg

Код:

import matplotlib.pyplot as plt
import pandas as pd
import readTrc
from scipy import signal

datX, datY, m = readTrc.readTrc('C220180104_ch2_UHF00000.trc')
#100mil data points
srx, sry = pd.Series(datX * 1000), pd.Series(datY * 1000)
df = pd.concat([srx, sry], axis = 1)
df.set_index(0, inplace = True)

b, a = signal.butter(15, 0.1)
y = signal.filtfilt(b,a, df[1].values)
df2 = pd.DataFrame(y, index=df.index)

#Plot Impulse
if max(datX) < 0.01:
    df2.plot(grid = 1,
            linewidth = 0.5,
            figsize = (9,5),
            legend = False,
            xlim = (df.index[0], df.index[-1]))
else:
    df2.plot(grid = 1,
            linewidth = 1,
            figsize = (9,5),
            legend = False,
            xlim = (df.index[0], df.index[-1]))

plt.xlabel('Zeit in ms')
plt.ylabel('UHF-Signal in mV')

##plt.savefig('UHF_plot.png', dpi = 600)
plt.show()

print('done')

enter image description here

enter image description here

enter image description here

enter image description here

Без фильтра:

enter image description here

С фильтром:

enter image description here

В этом нет ничего особенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...