Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел_10.doc
Скачиваний:
33
Добавлен:
21.09.2019
Размер:
3.19 Mб
Скачать

33.5. Сглаживание данных

Очень важной задачей при обработке экспериментальных данных является устранение шумов - высокочастотных случайных составляющих в сигнале. Алгоритмы, позволяющие решить эту задачу, называются алгоритмами сглаживания (smoothing).

Конечно, можно попробовать удалить случайную составляющую из сигнала и с помощью вычисления, например, синусоидальной регрессии или, лучше, регрессии фрагментами полиномов. Однако такой подход не всегда может быть эффективным по той причине, что все-таки регрессия - это очень грубый вычислительный инструмент, и ее использование может уничтожить информативную составляющую в сигнале, особенно если он сложен или быстро изменяется. Немаловажным фактором является и то, что расчет регрессии - это достаточно сложная вычислительная задача, особенно при большом объеме эмпирических данных.

По изложенным выше причинам для сглаживания сигнала на практике обычно применяются не регрессивные методы, а более мягкие и простые алгоритмы фильтрации.

В Mathcad имеются три встроенные функции, позволяющие произвести сглаживание некоторой выборки данных:

1. medsmooth(y,n), где y - вектор значений сигнала, n - параметр, определяющий количество окон сглаживания, на которое будет разбит интервал при обработке данных (n может быть только нечетным целым числом, строго меньшим, чем количество элементов в выборке). Эта функция реализует популярный алгоритм «бегущих» медиан (running medians). Значение каждой точки заменяется на среднее значение по n точкам данных, окружающих данную (рис. 33.10).

Рис. 33.10. Алгоритм работы функции medsmooth при n=5.

Обязательным условием при ее применении является то, что эмпирические точки должны быть равномерно распределены на промежутке. Из всех встроенных функций сглаживания Mathcad medsmooth является наиболее надежной, однако, и наименее универсальной функцией;

2. ksmooth(x,y,b), где x и y - векторы данных, b - ширина окна сглаживания (этот параметр по величине должен равняться общей величине нескольких промежутков, разделяющих в данной выборке соседние точки). Данная встроенная функция реализует сглаживание на основании алгоритма Гаусса (его описание вы можете прочитать в соответствующей статье справочной системы Mathcad).

Эта функция заменяет каждое экспериментальное значение на взвешенное среднее.

. (33.10)

При этом веса каждой точки определяются функцией

. (33.11)

Лучше всего функция ksmooth подходит для устранения шумов в стационарном сигнале;

3. supsmooth(x,y), где x и y - векторы данных. Осуществляет сглаживание с помощью адаптивного алгоритма (в основе которого лежит метод наименьших квадратов), основанного на анализе взаимного расположения рассматриваемой точки и ближайших к ней (их количество зависит от особенностей поведения графика зависимости). Данная функция лучше всего подходит для сглаживания сложных нестационарных сигналов.

Все описанные выше функции возвращают в качестве ответа вектор из такого же количества элементов, как в исходных выборках. Поэтому если эмпирических точек было обработано немного, то при построении графика, для получения корректной кривой, стоит использовать возможности сплайн--интерполяции Mathcad (если же сглаживалась зависимость, образованная более чем 50–-100 точками, то этого, скорее всего, делать не потребуется).

Попробуем оценить эффективность функций сглаживания Mathcad. Для этого, используя генератор нормально распределенных случайных чисел, имитируем сигнал со значительным уровнем шума. Построим кривые усреднения при разных величинах окна сглаживания и определим степень влияния этого параметра на качество результата (рис. 33.11 – 33.13).

Из приведенных примеров можно заключить, что принципиальным условием успеха при сглаживании сигнала может быть правильный выбор алгоритма (так, например, в случае нашей зависимости метод «бегущих» медиан оказался не на высоте). Кроме того, весьма тщательно нужно относиться и к заданию величины окна сглаживания.

Реально алгоритмов, позволяющих решать всевозможные задачи сглаживания и фильтрации, существует гораздо больше, чем встроено в систему Mathcad в виде функций. И любой из них при необходимости может быть весьма просто реализован вами благодаря высокому вычислительному потенциалу системы. Так, можно создать весьма простой и эффективный метода сглаживания, известный как скользящее усреднение. Изучая его, вы оцените, насколько проще в вычислительном плане алгоритмы сглаживания по сравнению с той же регрессией.

Рис. 33.11. Сглаживание с помощью функции medsmooth. Обратите внимание на влияние ширины окна сглаживания на качество результата

Рис. 33.12. Сглаживание с помощью функции ksmooth.