Функции > Анализ данных > Интерполяция и прогнозирование > Интерполяция B-сплайном
  
Интерполяция 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.