我在Matlab中编写了一个函数,它给出了一个位置(x,y,z)的向量。
现在我正在寻找在网格上制作此字段的彩色地图的最简单方法,颜色应该与矢量的范数相关。
为[x_0,x_1]中的$ x \定义此类网格的最简单方法是什么?[y_0,y_1],z \ in [z_0,z_1] $?可能每个组件都有空间,但也许已经有一个命令可以为我提供网格。
现在我需要评估我的功能。问题是,它实际上给了我两个向量,但我只对第一个感兴趣。因此,当我第一次尝试这样做时,我认为$ [A(i,j,k),〜] =函数(x(i),y(j),z(k))$可以工作,但它没有(我的目标是:选择第一个向量(A)并用引用(i,j,k)标记他,以便稍后知道该向量属于哪个坐标)。
所以我对任何想法都非常感兴趣。
答案 0 :(得分:2)
函数meshgrid
可能正是您要生成的x,y和z坐标。
答案 1 :(得分:0)
而不是
[A(i,j,k),~]=function(x(i),y(j),z(k));
试
[A(i,j,k,:),~]=function(x(i),y(j),z(k));
这样您就可以拟合3坐标向量的整个大小。此外,如果您想预先分配空间使用
A = zeros(Nx,Ny,Nz,3);
其中Nx,...
是坐标空间的调光。然后像@Moly解释的那样,使用meshgrid
生成3D网格,
[X Y Z] = meshgrid(x,y,z);
并循环或向量化以在点X(i,j,k),Y(i,j,k),Z(i,j,k)
处解析函数的值,计算norm
并将其存储在3D数组C
中。
修改强>
无法使用mesh(X,Y,Z,C)
表示多维数据集,但可以使用mesh
显示3D多维数据集的各个切片,将高度Z
设置为等于函数{{1}的结果}}。然后需要做一些额外的工作才能使着色正确。
另一种方法是使用C
或pcolor
。这可能是显示4D数据而不是创建3D等值面的最简单方法。
代码:
contourf