Я приложил изображения входного сигнала (показан синим цветом), который на самом деле является непрерывным входным потоком и чей тренд мне неизвестен, и сигнал сглаживается с использованием фильтра скользящей средней диапазона 5 (показан красным).
Необработанный входной сигнал и сглаженный входной сигнал
Первая производная от необработанного входного и сглаженного входного сигнала
Моя цель — вычислить отношение этого сигнала к его первой производной. Однако ясно, что первая производная является шумной и не дает хороших результатов. Я понимаю, что должен изменить фильтр со скользящего среднего на более надежный.
Я посмотрел фильтр Савицкого-Голея, но на другом сайте читал, что он более эффективен для сохранения формы сигнала, чем для снижения шума. http://terpconnect.umd.edu/~toh/spectrum/Smoothing.html
Следующим предположением я бы выбрал фильтр Калмана, но ему нужна оценка начального состояния, которую я не могу знать для этого типа сигнала.
Любые другие предложения о том, как сгладить первую производную шумного ввода?
Прежде всего, не ожидайте никаких чудес от любого из этих фильтров. Численное дифференцирование данных с шумом, как правило, является критическим, поскольку сама операция дифференцирования действует как фильтр верхних частот и, таким образом, усиливает шум.
Да, есть различия между Скользящей средней, Савицким-Голеем и Кальманом, но они тонкие. Основным преимуществом Savitzky-Golay является использование адаптивного размера окна.
Глядя на ваши данные, кажется, что вы должны использовать намного больший размер окна, что приводит к более низкой частоте среза. Но тогда я не знаю, всегда ли ваши наборы данных выглядят так.
Еще один совет: пока ваши фильтры эффективно линейны, не имеет значения, применяете ли вы сначала фильтр, а затем вычисляете производную или вычисляете производную от исходного сигнала и затем применяете фильтрацию.
Других решений пока нет …