Глава 3. Обработка результатов эксперимента

Сглаживание экспериментальных данных


Попробуем сгладить набор экспериментальных данных, полученных в разделе 2.1. Совершенно очевидно, что любая процедура сглаживания будет подчинена какой-либо цели экспериментатора – например, показать общий тренд данных либо уменьшить шум.

Воспользуемся стандартным методом библиотеки numpy с именем convolve. Вот полный текст программы:


Метод convolve (строка 13) осуществляет линейную свёртку двух векторов данных. Первый параметр – массив (вектор) исходных данных, второй параметр – сглаживающий (пробный) вектор, который формируется в строке 11. Его размер соответствует количеству точек, которые будут использованы для вычисления среднего для каждой точки из первого вектора (за исключением особых случаев в начале и конце массива данных). Третий параметр – режим свёртки (из возможных full, same и valid описанную логику сглаживания даёт только параметр same).

Параметр win задаёт размер второго вектора. Чем он больше – тем по большему числу экспериментальных точек идёт усреднение, тем лучше сглаживание. Метод ones задаёт единичный вектор, но поскольку мы вычисляем среднее с равным весом по всем точкам, в строке 11 значение filt для win = 6 будет равно:

array([0.1667, 0.1667, 0.1667, 0.1667, 0.1667, 0.1667])

Пробный вектор можно представить движущимся вдоль массива исходных данных для расчёта среднего для каждого элемента, но для значений в начале массива, индекс которых меньше win/2, и для значений в конце массива, индекс которых больше win/2, набора значений будет не хватать, и среднее будет рассчитываться неверно. Поэтому в строке 12 мы делим нацело значение win пополам, а в строке 14 строим график для среза нашего массива, в котором убраны начальные и конечные значения с соответствующими индексами.


Для изображения нескольких кривых с разными значениями параметра фильтра нам потребовалось изменить текст описанной выше программы. А именно, была написана функция, которая берёт значение win и массив исходных данных и выдаёт обрезанные массивы со значениями абсцисс и с результатом сглаживания:

Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!

От кого:
Ваш комментарий будет виден всем пользователям