MATLAB: 3D coordinates vectors. Sum along one of the dimentions of resulting volume

3dMATLABmeshgridsumvectorsvolume

Hello,
I have a 3D data in a form of 3 vectors: X, Y, Z. I want to sum the resulting volume along on of the dimentions. What is the fastest and easies way to do this?
These are long vectors (20k elements etc.), so it would be better to do this without creating temporary 3D matrix.
In other words: I have 3 vectors with coordinates of points. I would like to create a sum like on the image below – project the 3D volume to one of the walls:
Best regards, Alex

Best Answer

I don't have your data, so I cannot use it. But it is simple enough to generate some simple non-uniform data.
xyz = sin(rand(10000,3)*2);
n = size(xyz,1);
H1 = plot3(xyz(:,1),xyz(:,2),xyz(:,3),'b.');
set(H1,'Markersize',.1)
hold on
box on
grid on
H2 = plot3(xyz(:,1),xyz(:,2),repmat(min(xyz(:,3)),n,1),'r.');
set(H2,'Markersize',.1)
The red dots all lie in the projection plane.
If you have vastly more data than this, then you might use smaller dots. But I'll admit that MATLAB graphics seem to lag a bit when trying to plot millions of points. With millions of points, you might also want to use tools like accumarray, to actually count the number of points that lie in any cell of the projection plane.
Related Question