Под «вторыми моментами» документация означает второй central moment.
В случае одномерных данных это будет variance (или квадрат стандартного отклонения).
В вашем случае, когда у вас есть двумерные данные, вторым центральным моментом является covariance matrix.
Если X
является п-на-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);
Теперь, что это имеет отношение к делать с эллипсами? Ну, то, что вы здесь делаете, это, по сути, подборка multivariate normal distribution для ваших данных. Ковариационная матрица определяет форму этого распределения, а контурные линии многомерного нормального распределения - ждут его - are ellipses!
Направления и длина осей эллипса определяются собственные векторы и собственные значения матрицы ковариации:
[V, D]=eig(Sigma);
Столбцы V
являются теперь собственные векторы (т.е. направления осей) и значения по диагонали D
- собственные значения (т. е. длины осей). Таким образом, у вас уже есть «MajorAxisLength» и «MinorAxisLength». Ориентация, вероятно, всего лишь угол между главной осью и горизонталью (подсказка: используйте atan2
, чтобы вычислить это из вектора, указывающего вдоль главной оси). Наконец, eccentricity является
sqrt(1-(b/a)^2)
где длина главной оси и б длина малой оси.
Спасибо. Это очень хорошо написано и похоже на то, что мне нужно. – BigBeagle
+1 - Для этого нужны более элегантные объяснения ..... когда дело доходит до математики, по крайней мере. – Jacob
Кстати, вы можете вычислить ковариацию в MATLAB непосредственно с 'cov', но ваш код был явно более поучительным. – Jacob