Matlab - 绘制一个矢量场

时间:2013-08-07 16:41:24

标签: matlab graphics plot

我在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)标记他,以便稍后知道该向量属于哪个坐标)。

所以我对任何想法都非常感兴趣。

2 个答案:

答案 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}的结果}}。然后需要做一些额外的工作才能使着色正确。

另一种方法是使用Cpcolor。这可能是显示4D数据而不是创建3D等值面的最简单方法。

代码:

contourf

enter image description here