create multiple spheres at given coordinates using a for loop or function and function call

15 次查看(过去 30 天)
Hi I have a set of coordinates that I would like to use to generate spheres on my plot. But I am struggling to write a for loop or function that executes this properly. if working properly i should get 4 new spheres from the coordinates in xyz. I have included the points and my attempt. Any help would be greatly appreciated.
xyz = [-8.67212090030965 -7.78294481282592 4.19809966191787
4.30363429770975 -6.33796132936349 2.30412196271579
11.4626419696253 3.31049523749869 2.84193335035400
1.28757516363600 6.20802478748340 11.1358580308193]
x1 = xyz(:, 1);
y1 = xyz(:, 2);
z1 = xyz(:, 3);
SizeXYZ = size(xyz,1);
for i = 1:SizeXYZ
createspheres(x1(i),y1(i),z1(i));
end
function createspheres(spherex, spherey, spherez)
[spherex, spherey, spherez] = sphere(4);
newroot
end

采纳的回答

Asad (Mehrzad) Khoddam
You can use this code:
xyz = [-8.67212090030965 -7.78294481282592 4.19809966191787
4.30363429770975 -6.33796132936349 2.30412196271579
11.4626419696253 3.31049523749869 2.84193335035400
1.28757516363600 6.20802478748340 11.1358580308193]
x1 = xyz(:, 1);
y1 = xyz(:, 2);
z1 = xyz(:, 3);
SizeXYZ = size(xyz,1);
for i = 1:SizeXYZ
[x,y,z] = createspheres(x1(i),y1(i),z1(i));
surf(x,y,z);
hold on
end
%
function [X,Y,Z] =createspheres(spherex, spherey, spherez)
[x, y, z] = sphere(20);
X= x+ spherex;
Y = y+ spherey;
Z = z+spherez;
%newroot
end
  3 个评论
Asad (Mehrzad) Khoddam
You can make a 3d matrix and add x,y, and z to a layer(dimension) of the matrix.
allXYZ = zeros(4,3,SizeXYZ);
% 4 : size of points
% 3: x , y, and z
then in the loop you can have something like this:
allXYZ(:,:,i)= [x,y,z]; % if x is a vertical vector or [x', y', z'] for horizontal vectors

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by