2009-10-07 11 views
6

Obecnie pracuję nad replikacją niektórych funkcji funkcji mapopropów Matlab w Octave. Jednak mam trochę zawieszenia na podzbiór funkcji. Właściwości "mimośrodowości", "większej wartości średniej", "mniejszej długości" i "orientacji" są moim punktem skupienia. W dokumentacji wszystkie one pochodzą z "... elipsy, która ma te same sekundy, co region".Jakie są sekundy w regionie?

Moje pytanie brzmi: jakie są te drugie chwile i jak je znaleźć?

szukałem pod tym linkiem: http://en.wikipedia.org/wiki/Image_moments

Szczerze mówiąc, to jest po prostu zostawili mnie bardziej mylić. Czy ktoś może wskazać mi coś bardziej przyjaznego dla początkujących? Dzięki.

Odpowiedz

18

Przez "sekundy" dokumentacja oznacza drugą central moment.

W przypadku danych jednowymiarowych byłby to variance (lub kwadrat odchylenia standardowego).

W twoim przypadku, gdy masz dane dwuwymiarowe, drugim momentem centralnym jest covariance matrix.

Jeśli X jest macierzą n-by-2 punktów w danym regionie, można obliczyć macierz kowariancji Sigma w MATLAB tak (niesprawdzone):

mu=mean(X,1); 
X_minus_mu=X-repmat(mu, size(X,1), 1); 
Sigma=(X_minus_mu'*X_minus_mu)/size(X,1); 

Teraz, co to ma wspólnego zrobić z elipsami? Cóż, to co tu robisz, to dopasowanie danych do twoich danych. Macierz kowariancji określa kształt tego rozkładu, a linie konturu wielowymiarowego rozkładu normalnego - poczekaj na to - are ellipses!

Kierunki i długości osi elipsy są podane przez wektory własne i wartości własne macierzy kowariancji:

[V, D]=eig(Sigma); 

Kolumny V są obecnie wektory własne (tj kierunki osi) i wartości na przekątnej D są wartości własne (tj. długości osi). Masz już "MajorAxisLength" i "MinorAxisLength". Orientacja jest prawdopodobnie tylko kątem pomiędzy główną osią a poziomem (wskazówka: użyj atan2, aby obliczyć to z wektora wskazującego wzdłuż głównej osi). Wreszcie eccentricity jest

sqrt(1-(b/a)^2) 

gdzie a jest długością głównej osi, a b jest długością osi.

+0

Dziękuję. Jest to bardzo dobrze napisane i wygląda dokładnie tak, jak potrzebuję. – BigBeagle

+1

+1 - SO potrzebuje bardziej eleganckiego wyjaśnienia, jak to ..... jeśli chodzi o matematykę. – Jacob

+1

Btw, możesz obliczyć kowariancję w MATLAB bezpośrednio z 'cov', ale twój kod był oczywiście bardziej pouczający. – Jacob

0

Niezupełnie odpowiedź, której szukasz, ale może pomóc komuś.

Napisałem tę książkę na temat mechaniki i pisał M-Files aby obliczyć moment bezwładności:

Mastering Mechanics using MATLAB 5

Kod z niej można znaleźć tutaj:

File Exchange

Rozdział 9 powinien być interesujący. Podejrzewam, że możesz użyć kodu jako punktu wyjścia.

1

Nie jestem do końca pewien, ale to nie odnosi się do statistical notion z moments (jak w funkcji generującej chwili):

Moments Środkowej (momentami o średniej):
    mu_k = E[(X − E[X])^k] ,     gdzie E oznacza wartość oczekiwana

Zatem pierwsze cztery momenty są odpowiednio: {1 wariancji, skośność, kurtoza}.
Ale znowu mogę się mylić;)