【发布时间】:2014-03-14 05:11:40
【问题描述】:
我有 3 个大小为 x = 500、y = 500 但 z = 500*500 的向量。这里z 是从-3 到3 的高度。我已经使用surf(x,y,z) 显示了这个,但我的问题是在这里我想将它转换为具有相同大小x=500、y=500、z=500 的 3D 对象。各位高手,这个怎么换算?
【问题讨论】:
我有 3 个大小为 x = 500、y = 500 但 z = 500*500 的向量。这里z 是从-3 到3 的高度。我已经使用surf(x,y,z) 显示了这个,但我的问题是在这里我想将它转换为具有相同大小x=500、y=500、z=500 的 3D 对象。各位高手,这个怎么换算?
【问题讨论】:
来自help surf:
SURF(x,y,Z) 和 SURF(x,y,Z,C),用两个向量参数替换 前两个矩阵参数,必须有 length(x) = n 和 长度(y) = m 其中 [m,n] = 大小(Z)。在这种情况下,顶点 表面补丁是三元组(x(j),y(i),Z(i,j))。 请注意,x 对应于 Z 的列,y 对应于 行。
因此:
[x,y] = meshgrid(x,y); %// replicate vectors appropriately
xyz = [x(:) y(:) z(:)]; %// make [X,Y,Z] triplets
编辑:见下图。
在此图像中,有 3 个不同的 x-坐标,3 个不同的 y-坐标,但 9 不同的 z-坐标。因此,3D 对象将包含 9 个点,通常由 9×3 坐标表示。
我知道您想以某种方式将其减少到 3×3 坐标,或者以某种方式将其表示为 3×3×3=27 坐标....我只是不知道如何你想这样做。
所以,请提供您想要的清晰简单的图片,我将能够更好地帮助您:)
【讨论】:
meshgrid 步骤生成。您似乎想以某种方式将其减少到仅 500 个三胞胎。在不丢失大部分信息的情况下,仅用 500 个点来表示您的原始 3D 对象是不可能的。含义:你说你想要的只是你的 3D 对象的一部分,原始宽度的 1/500。