В настоящее время я работаю с многомерным распределением вероятностей (функция MATLAB mvksdensity
), но у меня есть одна проблема, удерживающая меня.
У меня есть 3D PDF из [XYZ] точек впространство.Я хотел бы, чтобы это было в единицах точек, например, в оценочном количестве точек на одну ячейку вместо вероятности.
Это потому, что я хотел бы получить оценку количества точек, найденных в определенных регионах, я хотел бы преобразовать PDF в время (умножив на 1 / частоту дискретизации), и я хотел бы разделитьразные PDF-файлы с различными данными и т. д.
Моя первая мысль - разделить PDF-файл на его сумму (поэтому сумма (PDF) = 1), а затем умножить на общее количество [XYZ] точек.Таким образом, сумма (PDF) = количество баллов, и я должен быть в состоянии сделать все вышеперечисленное.
По сути, мой вопрос заключается в том, как преобразовать PDF в нечто более похожее на гистограмму - чтобы единицы измеренияэто «вещи», а не вероятность ...
Любая помощь будет высоко ценится,
Спасибо,
Удочка.
Вот игрушечный примериз того, что я имею в виду:
pos = rand(50000,3)*1000; % [XYZ] points
vindx = 0:50:1000; % grid over which we want to estimate KDE
[xv,yv,zv] = ndgrid(vindx); % grid over which we want to estimate KDE
f = mvksdensity(pos,[xv(:),yv(:),zv(:)],'Bandwidth',75,'Kernel','normal','Function','pdf'); % PDF
f = f./nansum(f(:)) .* length(pos(:,1)); % now the sum of f will = the number of [XYZ] points
map = NaN(length(vindx),length(vindx),length(vindx)); % prepare an empty 3D map
[~,idx] = ismember(xv(:),vindx); % get the indices along X
[~,idy] = ismember(yv(:),vindx); % get the indices along Y
[~,idz] = ismember(zv(:),vindx); % get the indices along Z
ida = sub2ind(size(map),idy,idx,idz); % get the indices into map
map(ida) = f(:); % add the values to map
figure % plot data
isosurface(map,nanmax(f(:))/2);
daspect([1 1 1])