Под "вторыми моментами" документация означает второй центральный момент .
В случае одномерных данных это будет дисперсия (или квадрат стандартного отклонения).
В вашем случае, когда у вас есть двумерные данные, вторым центральным моментом является ковариационная матрица .
Если X
является матрицей n-на-2 точек в вашем регионе, вы можете вычислить ковариационную матрицу Sigma
в MATLAB следующим образом (не проверено):
mu=mean(X,1);
X_minus_mu=X-repmat(mu, size(X,1), 1);
Sigma=(X_minus_mu'*X_minus_mu)/size(X,1);
Теперь, как это связано с эллипсами? Что вы делаете здесь, так это, по сути, подгонка многомерного нормального распределения к вашим данным. Ковариационная матрица определяет форму этого распределения, а контурные линии многомерного нормального распределения - ждите его - - это эллипсы !
Направления и длины осей эллипса задаются собственными векторами и собственными значениями ковариационной матрицы:
[V, D]=eig(Sigma);
Столбцы V
теперь являются собственными векторами (то есть направлениями осей), а значения по диагонали D
являются собственными значениями (то есть длинами осей). Таким образом, у вас уже есть MajorAxisLength и MinorAxisLength. Ориентация, вероятно, представляет собой просто угол между большой осью и горизонталью (подсказка: используйте atan2
, чтобы вычислить это из вектора, направленного вдоль большой оси). Наконец, эксцентриситет равен
sqrt(1-(b/a)^2)
где a - длина большой оси, а b - длина малой оси.