Если V
является допустимой ковариационной матрицей гауссова, то она является симметричной положительно определенной и, следовательно, определяет допустимое скалярное произведение. Кстати inv(V)
тоже делает.
Поэтому, предполагая, что M и p являются векторами-столбцами, вы можете определить расстояния как:
d1 = sqrt((M-p)'*V*(M-p));
d2 = sqrt((M-p)'*inv(V)*(M-p));
способ Matlab можно было бы переписать d2
as (возможно, некоторые ненужные скобки):
d2 = sqrt((M-p)'*(V\(M-p)));
Хорошо, что когда V — единичная матрица, то d1==d2
соответствует классическому евклидову расстоянию. Чтобы узнать, нужно ли вам использовать d1
или d2
, оставлено в качестве упражнения (извините, часть моей работы - преподавание). Напишите многомерную формулу Гаусса и сравните ее с одномерным случаем, поскольку многомерный случай является лишь частным случаем одномерного (или проведите некоторый численный эксперимент).
NB: в очень многомерных пространствах или для очень многих точек для проверки вы можете найти умный/более быстрый способ из собственных векторов и собственных значений V (т.е. главных осей эллипсоида и их соответствующей дисперсии).
Надеюсь это поможет.
A.
person
Adrien
schedule
15.12.2010