Ожидаемое значение pdf является интегралом по произведению значений сетки и значений pdf в соответствующих точках сетки.
Для интеграции через 3D-сетку используйте функцию Matlab triplequad
( doc ).В качестве примера, давайте вычислим ожидаемое значение x:
expectedx = triplequad(pdfxfun,xmin,xmax,ymin,ymax,zmin,zmax)
pdfxfun
в этом вызове должен быть дескриптором функции, который для любой получаемой точки (x, y, z) должен возвращать произведениезначение PDF в этой точке и х.В вашем случае это может быть достигнуто путем интерполяции данных вашей сетки.Я не знаю функции 3D-интерполяции в Matlab, поэтому, вероятно, вам придется поработать над этим самостоятельно.Грубо говоря, вы должны сделать следующее:
function pdfvalue = pdfinterpolation(x,y,z,Xgrid,Ygrid,Zgrid,pdfdata)
% compute interpolated pdfvalue at (x,y,z) from griddata and pdfdata
Тогда pdfxfun
выше можно определить как анонимную функцию при вызове triplequad
:
pdfxfun = @(x,y,z) x*pdfinterpolation(x,y,z,myxgrid,myygrid,myzgrid,pdfdata)
expectedx = triplequad(pdfxfun,xmin,xmax,ymin,ymax,zmin,zmax)