MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Julia Sandell on 16 Jan 2013

I am attempting to run a monte carlo simulation modeling the photon transport in a sphere with two different layers. To run this code I need to generate a segmented sphere. The 100x100x100 slab example with four different layers looks like this:

seg = zeros(100,100,100); seg(:,:,10:25) = 1; seg(:,:,26:50) = 2; seg(:,:,51:75) = 3; seg(:,:,76:end) = 4; fid = fopen('seg.bin', 'wb'); fwrite(fid, seg, 'uint8'); fclose(fid);

How would I do something similar for a 50x50x50 sphere and an ellipsoid. The commands sphere() and ellipsoid() give me the coordinates for such a shape in an array, but I need to assign numbers as in the example above to a spherical volume.

Thank you so much!

*No products are associated with this question.*

Answer by Teja Muppirala on 16 Jan 2013

Something like this?

Rx = 1; %<-- Change these to make an ellipse instead Ry = 1; %<-- Change these to make an ellipse instead Rz = 1; %<-- Change these to make an ellipse instead

[X,Y,Z] = ndgrid(linspace(-Rx,Rx,50),linspace(-Ry,Ry,50),linspace(-Rz,Rz,50));

R = sqrt((X/Rx).^2 + (Y/Ry).^2 + (Z/Rz).^2);

seg = zeros(size(X)); seg(R <= 1 ) = 1; seg(R <= 0.5) = 2;

slice(Y,X,Z,seg,0,0,0); axis equal vis3d; colorbar;

## 0 Comments