Минимизация ошибки интерполяции между двумя наборами данных - PullRequest
4 голосов
/ 29 ноября 2010

В верхней части диаграмм ниже мы видим некоторое значение (ось Y), изменяющееся со временем (ось X).

Когда это происходит, мы выбираем значение в разное и непредсказуемое время, также мы чередуем выборку между двумя наборами данных, обозначенными красным и синим.

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

diagrams showing the error in interpolation

Первоначально я использовал линейную интерполяцию для получения значения, затем я попытался использовать интерполяцию Катмулла-Рома. Первые результаты в значениях сближаются, а затем расходятся между каждой точкой данных; последнее приводит к значениям, которые остаются ближе, но где средняя ошибка больше.

Может ли кто-нибудь предложить другую стратегию или метод интерполяции, который обеспечит большее сглаживание (возможно, путем использования большего количества точек выборки из каждого набора данных)?

Ответы [ 5 ]

2 голосов
/ 30 ноября 2010

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

Тем не менее, если у вас есть предварительные знания о базовом процессе, вы можете выбрать один из нескольких методов интерполяции, чтобы минимизировать ошибки. Например, если вы измеряете силу сопротивления как функцию скорости крыла, вы знаете, что отношение является квадратным (a * V ^ 2). Затем вы можете выбрать полиномиальную аппроксимацию 2-го порядка и иметь довольно хорошее совпадение между интерполяциями двух серий.

1 голос
/ 30 декабря 2010

Я согласен с ysap, что на этот вопрос нельзя ответить, как вы, возможно, ожидаете.Могут быть лучшие методы интерполяции, в зависимости от динамики вашей модели - как и в случае с ysap, я рекомендую методы, которые используют базовую динамику, если она известна.

Что касается красных / синих выборок, я думаю, что вы сделали хорошее наблюдение о выборочных и интерполированных наборах данных, и я бы поставил под сомнение ваше первоначальное ожидание, что:

При вычислении значения вв любое время мы ожидаем, что как красный, так и синий наборы данных будут возвращать одинаковые значения.

Я этого не ожидаю.Если вы предполагаете, что не можете точно интерполировать - и особенно если ошибка интерполяции велика по сравнению с ошибками в выборках - тогда вы наверняка будете иметь функцию непрерывной ошибки, которая показывает самые большие ошибки (самые длинные) (время) от ваших точек выборки.Поэтому два набора данных, которые имеют разные точки выборки, должны демонстрировать поведение, которое вы видите, потому что точки, которые находятся далеко (во времени) от красных точек выборки, могут быть близки (во времени) к синим точкам выборки и наоборот - если расположены в шахматном порядке, как ваши точки,это обязательно будет правдой.Таким образом, я ожидаю, что вы покажете, что:

При просмотре с течением времени значения из каждого набора данных (красный и синий) будут казаться расходящимися, а затем сходятся относительно исходного значения.

(Если у вас нет информации о базовой динамике (кроме частотного содержания), то точки Джакомо по сэмплированию являются ключевыми - однако вам не нужно интерполировать, если вы посмотрите на информацию ниже Найквиста.)

1 голос
/ 30 ноября 2010

Попробуйте B-сплайны : Catmull-Rom интерполирует (проходит через точки данных), B-сплайн выполняет сглаживание.
Например, для равномерно распределенных данных (не ваш случай)

Bspline(t) = (data(t-1) + 4*data(t) + data(t+1)) / 6

Конечно, интерполированные красные / синие кривые зависят от расстояния между красными / синими точками данных, поэтому не могут идеально совпадать.

1 голос
/ 30 ноября 2010

Я хотел бы процитировать Введение в сплайны Catmull-Rom , чтобы предложить не использовать Catmull-Rom для этой задачи интерполяции.

Одна из особенностей Catmull-Rom сплайн состоит в том, что указанная кривая пройдет через все контрольные точки - это не относится ко всем типам сплайнов.

По определению ваша красная интерполированная кривая пройдет через all красные точки данных и ваша синяя интерполированная кривая пройдет через все синие точки.Поэтому вы не получите наилучшего соответствия для обоих наборов данных.

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

0 голосов
/ 02 декабря 2010

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

Поэтому вам необходимо знать максимальную частоту B исходной функции, а затем собирать выборки счастота не менее 2B .Если ваша функция имеет очень высокие частоты и вы не можете сэмплировать так быстро, вы должны хотя бы попытаться отфильтровать их перед сэмплированием.

...