MATLAB: How to find the weighted centroid, center of mass/barycenter of a 3D grid of points

center of mass/barycenter of a 3d grid of pointsweighted centroid

Dear all, I am new to matlab, I need to find the coordinates of the center of mass of a regular 3D grid of points, each point being weighted by an intensity value v. I have the 3D grid as a 2D matrix A, with rows A(k,:)= [xk, yk, zk, vk], where xk, yk, zk, are the coordinates of the point k, and vk is its intensity (current amplitude in my case, I am working with source imaging). I mention that the hull of the 3d grid is concave or convex at times, actually the cortical surface, with the points placed within the brain substance regularly; and the barycenter cannot be but one these 3D grid points (it cannot be, for example, outside the brain bounded by a concave surface such as a sulcus). I know this may be trivial, I appreciate your help. Tavi

Best Answer

sum(bsxfun(@times,A(:,1:3),A(:,4)),1)/sum(A(:,4))
Not sure if this is what you're looking for...