Script Efficiency for Plotting Spheres

I have some code that I found in another thread for plotting spheres in 3d cartesian space. This code works excellently, and with relative speed, if I'm plotting 1000 or fewer points. However, my data set (A, which contains x,y,z coordinates, as well as the radii of spheres, and the spheres have rigid boundaries) contains 60,000 spheres. Whether the spheres are uniform in size or not, plotting in excess of ~1000 points takes quite a long time. I'm wondering if there is a more efficient means of coding this.
Current script:
A = textread('out1404000.dump', '', 'headerlines', 9 );
xyz = A(1:1000, 4:6); %I'm currently taking rows 1:1000, but would prefer to plot all rows.
r2 = A(1:1000, 3); %I'm currently taking rows 1:1000, but would prefer to plot all rows.
[X,Y,Z] = sphere;
plotfun = @(c,r2) surf(X*r2 + c(1),Y*r2 + c(2),Z*r2 + c(3));
figure(3)
hold on
axis equal
grid on
h = cellfun(plotfun,num2cell(xyz,2),num2cell(r2),'UniformOutput',0);
Here is an example matrix containg columns, from left to right, of radius, x, y, z.
0.5000 -45.1766 -48.5664 0.4843
0.5000 -50.0416 -49.2495 0.4961
1.0000 -47.9513 -47.9333 0.9957
1.0000 -49.9313 -47.3837 1.8390
1.0000 -48.8482 -50.0006 0.9927
0.5000 -49.6122 -48.1071 0.4921
0.5000 -44.6511 -49.4200 0.4985
0.5000 -45.2021 -50.4440 0.4960
0.5000 -50.5025 -49.5157 1.3356
3.5000 -44.7595 -46.8283 4.0392
0.5000 -47.3386 -49.2080 0.4978
0.5000 -49.3041 -47.1562 0.4976
0.5000 -45.1425 -44.9833 0.4985
0.5000 -46.6837 -47.3048 0.5152
0.5000 -46.0781 -48.0926 0.4918
0.5000 -47.6858 -46.5254 0.4971
0.5000 -46.0302 -45.4569 0.4980
0.5000 -50.4889 -47.6416 0.4879
0.5000 -46.5252 -46.3235 0.4939
0.5000 -48.6297 -46.4955 0.8222
0.5000 -50.4515 -46.6441 0.4972
0.5000 -50.4994 -50.4919 0.4983
1.0000 -48.9826 -48.9605 2.6821
0.5000 -47.6021 -46.0127 1.3478
0.5000 -47.6011 -49.3150 1.4547
0.5000 -45.6905 -50.5026 1.3610
0.5000 -47.5423 -50.5057 0.4921
0.5000 -46.4702 -50.4537 0.4985
0.5000 -48.0139 -45.1044 1.3070
0.5000 -48.3227 -45.6022 0.4980
0.5000 -49.1370 -45.0227 0.4959
0.5000 -50.2749 -49.6185 2.3011
0.5000 -50.4952 -45.3492 0.4966
0.5000 -45.9672 -49.1762 0.4970
0.5000 -47.2015 -45.5727 0.4985
0.5000 -46.1117 -49.5996 1.3873
0.5000 -50.5028 -48.5089 0.9728
0.5000 -49.2593 -48.5942 1.2715
0.5000 -47.6558 -44.6532 0.4964
0.5000 -48.7230 -46.9734 4.4883
1.0000 -50.0172 -48.8540 4.3678
0.5000 -46.1410 -50.5063 4.7379
0.5000 -50.4774 -46.0237 1.2764
0.5000 -49.4659 -46.0204 0.4975
1.0000 -50.0074 -46.8401 3.7471
0.5000 -48.8859 -44.6244 1.3741
0.5000 -49.5962 -45.4225 1.2849
0.5000 -50.5010 -50.5006 1.4961
0.5000 -48.5182 -47.8545 4.9038
0.5000 -50.5004 -46.0659 2.2728

Respuestas (1)

darova
darova el 13 de Mzo. de 2020
  • Try to reduce mesh
[X,Y,Z] = sphere(5);
  • If you have so many sphere maybe you don't need inside part
  • maybe slice function will be helpfull

Productos

Versión

R2019b

Etiquetas

Preguntada:

el 13 de Mzo. de 2020

Respondida:

el 13 de Mzo. de 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by