使用meshgrid在Matlab中创建3D函数

时间:2014-03-28 20:58:14

标签: matlab

这应该是一个非常简单的问题,但由于某种原因,我得到了不合理的混淆,而且Matlab文档没有帮助。

给定一个统一的坐标网格(x_i,y_j,z_k),我想在Matlab中创建一个三维数组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吗?我知道我可以简单地制作一个三重循环,但我们知道这很慢。

谢谢!

1 个答案:

答案 0 :(得分:4)

使用ndgrid代替meshgrid,以避免第一维和第二维之间的不必要的排列。

从文档中看(另见here):

  

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

相同的结果