【问题标题】:How to convert surf to 3D object using matlab如何使用 matlab 将冲浪转换为 3D 对象
【发布时间】:2014-03-14 05:11:40
【问题描述】:

我有 3 个大小为 x = 500y = 500z = 500*500 的向量。这里z 是从-33 的高度。我已经使用surf(x,y,z) 显示了这个,但我的问题是在这里我想将它转换为具有相同大小x=500y=500z=500 的 3D 对象。各位高手,这个怎么换算?

【问题讨论】:

    标签: matlab surf


    【解决方案1】:

    来自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 坐标....我只是不知道如何你想这样做。

    所以,请提供您想要的清晰简单的图片,我将能够更好地帮助您:)

    【讨论】:

    • 我已经尝试过了,但我得到的 xyz 的大小是 [250000 1]...实际上我需要 [500 500 500]。我如何获得?
    • 我跳过了最后一步,x 大小为 500*500,y 大小为 500*500,z 大小为 500*500,但我需要 x=500,y=500 和 z=500 以便我可以得到一个大小为 [500 500 500] 的 3D 对象。
    • @Dams:最初,您有 500×500 XYZ 三元组,通过meshgrid 步骤生成。您似乎想以某种方式将其减少到仅 500 个三胞胎。在不丢失大部分信息的情况下,仅用 500 个点来表示您的原始 3D 对象是不可能的。含义:你说你想要的只是你的 3D 对象的一部分,原始宽度的 1/500。
    • 最初,我有一个取自冲浪功能的表面。 surf(x,y,z) 这里 z 是从 -3 到 3 的高度。可以将这个高度转换为 500 个切片。如果可能的话,我们将获得大小为 500*500*500 的 3d 对象。
    • @Dams:我想我没有正确理解你。确实会有 500×500×500 个点(所以用 3·500³ 个数字来表示它们)。但是你说你想要 3 个长度为 500 的数组。那只是 3·500 个数字,并不足以代表您的对象,除非所有 500 层都完全相同。所以,请澄清。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多