Кубическая сплайн-интерполяция в MATLAB - PullRequest
1 голос
/ 27 октября 2011

Я использую функцию interp1 в MATLAB для интерполяции некоторых отсутствующих данных в сигнале, и это работает как талисман. Тем не менее, я хотел бы знать, как работает эта функция.

Я проверил код функции interp1, которая использует функцию spline. Код функции spline чрезвычайно сложен для понимания, поэтому я гуглил и википедию его, и я знаю (в основном), как он работает, со степенями свободы и как функция использует полиномы (обычно 3-ий) порядок), чтобы создать недостающую часть кривой.

Если у меня есть массив из 20 чисел, а 8 - 12 будет отсутствовать (нули):

4 5 2 3 5 4 3 0 0 0 0 0 4 5 2 4 3 5 4 3

Как функция определяет, какие числа там поместятся? Это окно определенной ширины, которое перемещается по данным, например, при обработке [1-5], [2-6], [3-7] и т. Д.? Или он использует 2 или 3 числа слева и справа от отсутствующих данных?

Я не ищу математического объяснения, я просто хочу знать, как он делает свою магию:)

1 Ответ

2 голосов
/ 27 октября 2011

Я до сих пор не знаю, ответит ли это на ваш вопрос, но я попробую и увижу.

Я постараюсь быть максимально ясным и понятным, чтобы я мог намеренно оставить некоторые (возможно, важные) детали отдельнодля простоты.

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

Самый простой метод, о котором вы можете подумать, - это линейная интерполяция.Значение вашей неизвестной функции в данной точке является средневзвешенным расстоянием ближайших соседних значений.Это просто означает, что если точка интереса находится на расстоянии 1 от точки A и на расстоянии 9 от точки B, значение функции в этой точке будет 10% B и 90% A. Это эквивалентно рисованию прямых линий между каждой точкойгде вы знаете значение функции.

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

Среди других методов интерполяции, кубическая сплайн-интерполяция может решить эту проблему.Принцип остается идентичным, за исключением того, что вместо линии между каждой точкой у вас есть полином третьего порядка.Некоторые ограничения на полином делают его уникальным: именно его первая и вторая производные должны быть непрерывными с соседними полиномами.Это обеспечивает «гладкость» интерполированной функции.

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

Если этот ответ бесполезен или слишком упрощен, я его удалю.

...