Попробуйте динамическое искажение времени .Вот иллюстративный пример с 1D массивами.В базе данных у нас уже есть следующие 2 массива:
Массив 1: [5, 3, 1]
Массив 2: [1, 3, 5, 8, 8]
Мы измерили [2, 4, 6, 7]
.Какой массив наиболее похож на недавно измеренный?Очевидно, что второй массив подобен вновь измеренному, а первый - нет.
Давайте вычислим матрицы затрат в соответствии с этой статьей, подраздел 2.1 :
D(i,j)=Dist(i,j)+MIN(D(i-1,j),D(i,j-1),D(i-1,j-1))
Здесь D(i,j)
является (i,j)
элементом матрицы затрат, см. Ниже.Проверьте рисунок 3 этого документа, чтобы увидеть, что это рекуррентное отношение применяется.Вкратце: столбцы вычисляются первыми, начиная с D(1,1)
;D(0,*)
и D(*,0)
опущены в MIN.Если мы сравниваем массивы A
и B
, то Dist(i,j)
- это расстояние между A[i]
и B[j]
.Я просто использовал ABS(A[i]-B[j])
.Матрицы стоимости для этого примера:
![Dynamic Time Warping, cost matrices](https://i.stack.imgur.com/ccBaz.png)
Для Массива 1 у нас 13 баллов, для Массива 2 - 5. Меньший балл выигрывает, поэтому наиболее похожим массивом является Массив2. Лучший путь деформации отмечен серым.
Это всего лишь набросок DTW. Существует ряд проблем, которые необходимо решить в реальном приложении.Например, использование смещения вместо фиксированных конечных точек или определение мер подгонки: см. в этом документе , стр. 363, 5. граничные условия и стр. 364. В приведенном выше документе также есть дополнительные сведения.
Я только что заметил, что вы используете рыскание, тангаж и крен. Проще говоря: не и еще одна причина не .Можете ли вы использовать данные акселерометра вместо этого?«Акселерометр - это прямое измерение ориентации» (из рукописи DCM ), и это то, что вам нужно.А что касается вопроса ТС, имеет ли значение ориентация относительно Севера?Думаю, нет.
Гораздо проще сравнивать векторы ускорения, чем ориентации (углы Эйлера, матрицы вращения, кватернионы), как указывалось в tc.Если вы используете данные ускорения, у вас есть 3-мерные векторы в каждый момент времени, координаты (x, y, z).Я бы просто вычислил
Dist(i,j)=SQRT((A[i][X]-B[j][X])^2+(A[i][Y]-B[j][Y])^2+(A[i][Z]-B[j][Z])^2)
,
, то есть Евклидово расстояние между двумя точками.