2012-06-18 2 views
1

У меня есть матрица, которая дает мне двумерное дискретное распределение (N²-> R) в Matlab.Матрица как распределение вероятностей 2D: получить центральные моменты

Существуют ли встроенные функции в Matlab (R2011b со статистическим набором инструментов), дающие центральные моменты и среднее значение? Если они существуют для функций (R²-> R), это тоже хорошо. В противном случае мне придется строить их самостоятельно, но я не хочу изобретать велосипед.

Спасибо

ответ

2

Беглого взгляда, и я не мог отказаться от каких-либо функций, хотя это не факт любых средств.

Однако, работая его с нуля, и предполагая, что вы имели в виду матрицу, такие как:

% x=1 x=2 x=3 
P = [ 0.1 0.2 0.1  % y = 1 
     0.1 0.1 0.2  % y = 2 
     0.0 0.0 0.2 ]  % y = 3 

И вы имеете в виду, что это описывает совместное дискретное распределение (функция масс совместной вероятности). То есть запись в (X,Y) содержит вероятность появления (X,Y).

Я также предполагаю, что вы используете N в математических обозначениях, это натуральные числа. Если да, то вы можете использовать следующий код.

Среднее:

meanX = sum(P,1) * (1:size(P,2))'; 
meanY = sum(P,2)' * (1:size(P,1))'; 

Для центрального момента K,L (K correspnding к X и L, соответствующие Y):

[X,Y] = meshgrid(1:size(P,2),1:size(P,1)); 
integrandXY_KL = (X - meanX).^K .* (Y-meanY).^L .* P; 
momentXY_KL = sum(integrandXY_KL(:)); 

И вы можете обобщить его дальше, если значения X произвольны (а не только натуральные числа) следующим образом. Если Xvals = [ 1 2 4 ] и Yvals = [ 4 5 6 ]. Все вышеизложенное все еще работает, вы просто заменяете все вхождения 1:size(P,2) на Xvals и все вхождения 1:size(P,1) с Yvals.

+0

Спасибо, это было очень полезно! –