|
15.3.1. Встроенные функции для сглаживания
В Mathcad имеется несколько встроенных функций, реализующих различные алгоритмы сглаживания данных.
- medsmooth(y,b) — сглаживание алгоритмом "бегущих медиан";
- ksmooth(x,y,b) — сглаживание на основе функции Гаусса;
- supsmooth(x,y) — локальное сглаживание адаптивным алгоритмом,
основанное на анализе ближайших соседей каждой пары данных;
- х — вектор действительных данных аргумента (для supsmooth
его элементы должны быть расположены в порядке возрастания);
- у — вектор действительных значений того же размера, что и
х;
- b — ширина окна сглаживания.
Все функции имеют в качестве аргумента векторы, составленные из массива данных, и выдают в качестве результата вектор сглаженных данных того же размера. Функция medsmooth предполагает, что данные расположены равномерно.
Подробную информацию об алгоритмах, заложенных в функции сглаживания, Вы найдете
в справочной системе Mathcad в статье Smoothing (Сглаживание), находящейся в
разделе Statistics (Статистика).
Часто бывает полезным совместить сглаживание с последующей интерполяцией
или регрессией. Соответствующий пример приведен в листинге 15.16 для функции
supsmooth. Результат работы листинга показан на рис. 15.18 (кружки обозначают
исходные данные, крестики — сглаженные, пунктирная кривая — результат сплайн-интерполяции).
Сглаживание тех же данных при помощи "бегущих медиан" и функции Гаусса
с разным значением ширины окна пропускания показаны на рис. 15.19 и 15.20, соответственно.
Листинг 15.16. Сглаживание с последующей сплайн-интерполяцией


Рис. 15.18. Адаптивное сглаживание (листинг 15.16)

Рис. 15.19. Сглаживание "бегущими медианами"

Рис. 15.20. Сглаживание при помощи функции ksmooth
|