Creating a spherical matrix
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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!
0 commentaires
Réponses (1)
Teja Muppirala
le 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;
2 commentaires
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!