Интерполяция B-сплайном
B-сплайн — взвешенный набор базисных функций для полиномиальных сплайнов.
• Функция
bspline(vx, vy, u, n) возвращает вектор
vs, используемый функцией
interp, который состоит из следующих вложенных массивов: флаг для
interp; массив, столбцы которого содержат коэффициенты B-сплайна степени
n для данных, содержащихся в
vx и
vy, с учетом заданных в
u узловых значений; а также массив, столбцы которого содержат конечные точки интервалов, заданных узлами.
С помощью функции
bspline можно получить линейный, квадратичный или кубический сплайн. Результирующий сплайн отличается от
lspline,
pspline и
cspline тем, что
bspline соединяет полиномиальные сегменты в узлах, которые могут быть расположены не там, где сами точки данных.
Следующие функции принимают помимо значений данных весовые коэффициенты, отражающие уровень относительной ошибки. В алгоритме программы задан расчет последовательности узлов с помощью статистики Дарбина — Уотсона, на основании которой принимается решение о принятии или отбраковке аппроксимаций сплайном. Таким образом статистическим B-сплайнам требуется наименьшее количество узлов, чтобы отразить все особенности данных.
• Функция Spline2(vx, vy, n, [vw], [u], [level]) возвращает оптимальный набор узлов B-сплайна порядка n для интерполяции данных vx и vy с дополнительными весовыми коэффициентами vw, дополнительными узлами u и дополнительным уровнем отбраковки. Возвращаемый вектор становится вторым аргументом функции Binterp.
• Функция Binterp(x, b) возвращает значение y, интерполированное B-сплайном, соответствующее x, с использованием выходного вектора b функции Spline2 вместе с первой, второй и третьей производными.
• Функция DWS(b) возвращает статистику Дарбина — Уотсона для результирующего вектора b функции Spline2.
Интерполяция B-сплайном позволяет провести кривую через множество точек методом отбора трех соседних точек и построения полинома степени n, проходящего через эти три точки. Эти полиномы затем соединяются вместе в узлах и получается завершенная кривая. Если узлов меньше, чем точек данных, но находится приемлемая аппроксимация для y, B-сплайны позволяют реализовать хороший метод сжатия данных.
Описанные выше функции с использованием B-сплайна базируются на программном обеспечении Spline2, разработанном Б.Дж. Тийзе и М.А. Холландерс (B.J. Thijsse, M.A. Hollanders) (документацию на это программное обеспечение можно найти по адресу http://dutsm183.stm.tudelft.nl/software/software.dita, права на использование получены).
Аргументы
• vx, vy являются векторами из вещественных значений, имеющими одинаковую длину.
• u — действительный вектор из узлов, взятых в порядке возрастания, с числом элементов на n − 1 меньше, чем у vx. Узлы — это те значения, в которых отдельные полиномы B-сплайнов соединяются вместе, в отличие от других сплайнов, для которых узлы обязаны быть значениями x. Первый элемент в u должен быть меньше или равен первому элементу в vx. Последний элемент в u должен быть больше или равен последнему элементу в vx.
• n — целое число, равное 1, 2 или 3, указывающее степень каждой отдельной линейной (n = 1), квадратичной (n = 2) или кубической (n = 3) полиномиальной аппроксимации, используемой в B-сплайне.
• vw — дополнительный вектор из весовых коэффициентов для сплайна такой же длины, как у vx и vy.
• level — уровень отбраковки, выраженный числом от 0 до 1 включительно.
• b — вектор, созданный функцией Spline2.
• x — значение независимой переменной, для которого требуется рассчитать кривую интерполяции. Для получения наилучших результатов переменная x должна быть в интервале между значениями vx.