这里是matlab的新手。 我有10个数据点从0到90,在XY轴之间以10度为增量,另外10个点以相同的增量为YZ和ZX。我想从这些点创建一个表面。我想我应该用球坐标定义它然后转换为笛卡尔坐标,但我不确定如何为每个平面分配一个位置到那些数据点。目前我有
th = [0 10 20 30 40 50 60 70 80 90].*(2*pi)./360;
phi = [0 10 20 30 40 50 60 70 80 90].*(2*pi)./360;
r = [1.47 1.24 1.44 1.39 1.34 1.29 1.24 1.19 1.18 1.16] % r is my data at length 1.47 etc. from the origin in x to y plane
x=r.*sin(th).*cos(phi);
y=r.*sin(th).*sin(phi);
z=r.*cos(th);
[x,y,z]=sph2cart(th,phi,r);
plot3(x,y,z,'.');
grid on;
这是我能想到的最好的。这会将rs扩展到整个图形,而不是将它们保持在XY平面上,并使用YZ和ZX的其他集合。我正在考虑为x创建单独的集合a,为y创建单独的集合,对于z
创建ca = [1.47 1.24 1.44 1.39 1.34 1.29 1.24 1.19 1.18 1.16]
b = [2.47 2.24 .......................................]
c = [5.01 4.95........................................]
x=a.*sin(th).*cos(phi);
y=b.*sin(th).*sin(phi);
z=c.*cos(th);
但是在这种情况下,我不确定如何将a,b,c放入sph2cart(th,phi,r);
。这也不会生成表面,只是绘制每个平面上的点。我试过使用网格,但我无法使用网格。非常感谢帮助,我对编码很新。