【问题标题】:Creating a 3D function in Matlab using meshgrid使用网格网格在 Matlab 中创建 3D 函数
【发布时间】:2014-03-28 20:58:14
【问题描述】:

这应该是一个非常简单的问题,但由于某种原因,我感到莫名其妙地感到困惑,而且 Matlab 文档也没有帮助。

给定一个统一的坐标网格(x_i,y_j,z_k),我想在 Matlab 中创建一个 3 维数组F,这样F(i,j,k)=f(x_i,y_j,z_k)。以下显然是不正确的:

x=linspace(-1,1,100)  % uniform mesh on [-1,1]^3
[X,Y,Z]=meshgrid(x);

f=X.*Y.*sin(pi*Y.*Z)   % for example

我需要在某处使用permute 吗?我知道我可以简单地创建一个三重循环,但我们知道这很慢。

谢谢!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    使用ndgrid 而不是meshgrid 以避免在第一维和第二维之间出现不必要的排列。

    来自文档(另见here):

    MESHGRID 与 NDGRID 类似,只是前两个输入的顺序不同 并且输出参数被切换(即 [X,Y,Z] = MESHGRID(x,y,z) 产生与 [Y,X,Z] = NDGRID(y,x,z)) 相同的结果

    【讨论】:

    • 是的,尽可能避免使用网格! +1 我最近went on a rant 也谈到了同样的事情。 meshgrid 似乎引起了很多混乱。
    • @chappjc 我认为你的咆哮很有道理 :-) 我最喜欢的是'versus .'
    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多