将函数调用中生成的值存储在数组中

2次查看(最近30天)
Nnamdi Chukwunenye
Nnamdi Chukwunenye 3 .卡特彼勒
编辑: 布鲁诺陈德良 2020年9月3日
嗨,我试图存储我从函数调用中绘制的4个球体的坐标。我只能返回最终球体的坐标,而不是全部。任何帮助都将不胜感激。
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 =大小(xyz, 1);
我= 1:SizeXYZ
[x,y,z spheresXYZ] = createsspheres (x1(i),y1(i),z1(i));
冲浪(x, y, z,“FaceColor”“k”);
持有
结束
函数[X,Y,Z, spheresXYZ] =createspheres(spherex, spherey, spherez)
[x, y, z] =球面(4);
X = X + spherex;
Y = Y + spherey;
Z = Z + spherez;
spheresXYZ = [X, Y, Z];
结束
2的评论
Nnamdi Chukwunenye
Nnamdi Chukwunenye 3 .卡特彼勒
你好,Rik,所以代码是生成4个球体,我想要一个数组(最好是一个矩阵,但从我的尝试,它可能需要一个细胞数组),包含4个球体的所有坐标。

登录评论。

接受的答案

布鲁诺陈德良
布鲁诺陈德良 3 .卡特彼勒
编辑:布鲁诺陈德良 3 .卡特彼勒
spheresXYZ =细胞(1、SizeXYZ);
我= 1:SizeXYZ
[x, y, z spheresXYZ{我}]= createspheres (x1 (i), y1 (i), z1(我));
...
结束
2的评论
布鲁诺陈德良
布鲁诺陈德良 2020年9月3日
如果你更喜欢存储3D数组(假设函数总是返回一个固定大小的输出),你可以像这样在循环结束时得到它们
spheresXYZ =细胞(1、SizeXYZ);
我= 1:SizeXYZ
...
结束
spheresXYZ = cat(3, spheresXYZ{:});
然后,当需要时,每个球#k坐标可以通过
spheresXYZ (:,:, k)
有一大堆的技术来预分配数组(见Rik的答案),可以适应每一种情况。这个话题超出了本帖的范围。

登录评论。

答案(1)

里克
里克 2020年9月3日
除了使用单元格数组,你还可以使用3D矩阵:
[~, ~, ~, spheresXYZ] = createspheres (0, 0, 0); spheresXYZ (1, 1, SizeXYZ) = 0;
n = 1: SizeXYZ
[x, y, z, spheresXYZ (:,:, n)) = createspheres (x1 (n), y1 (n), z1 (n));
结束

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!