将矩阵数据表示转换为meshgrid

时间:2016-08-17 00:02:53

标签: matlab plot wolfram-mathematica

我在Mathematica中用数字计算了感兴趣的函数$ f(x,y)$。为了保持一致性,我想使用Matlab进行绘图。

我以矩阵形式导出了我的函数:

 test =

-1.0000   -1.0000   -0.4864
-1.0000   -0.6000   -0.2804
-1.0000   -0.2000   -0.0462
-1.0000    0.2000   -0.0462
-1.0000    0.6000   -0.2804
-1.0000    1.0000   -0.4864
-0.6000   -1.0000   -0.2997
-0.6000   -0.6000   -0.1526
-0.6000   -0.2000    0.1118
-0.6000    0.2000    0.1118
-0.6000    0.6000   -0.1526
-0.6000    1.0000   -0.2997
-0.2000   -1.0000   -0.1809
-0.2000   -0.6000   -0.0939
-0.2000   -0.2000   -0.0046
-0.2000    0.2000   -0.0046
-0.2000    0.6000   -0.0939
-0.2000    1.0000   -0.1809
 0.2000   -1.0000   -0.1809
 0.2000   -0.6000   -0.0939
 0.2000   -0.2000   -0.0046
 0.2000    0.2000   -0.0046
 0.2000    0.6000   -0.0939
 0.2000    1.0000   -0.1809
 0.6000   -1.0000   -0.2997
 0.6000   -0.6000   -0.1526
 0.6000   -0.2000    0.1118
 0.6000    0.2000    0.1118
 0.6000    0.6000   -0.1526
 0.6000    1.0000   -0.2997
 1.0000   -1.0000   -0.4864
 1.0000   -0.6000   -0.2804
 1.0000   -0.2000   -0.0462
 1.0000    0.2000   -0.0462
 1.0000    0.6000   -0.2804
 1.0000    1.0000   -0.4864

因此test为36x3矩阵,其中列为xyf(x,y)。现在我需要轮廓绘制它。

但是,它不是meshgrid的形式。有任何想法,如何以contour函数可以绘制的形式快速转换它?

1 个答案:

答案 0 :(得分:2)

如果您的数据是常规数据(数据集与meshgrid重合但是采用矢量形式),那么您可以使用reshape

xgrid=6;
ygrid=6;
contour(reshape(test(:,1),xgrid,ygrid),reshape(test(:,2),xgrid,ygrid),reshape(test(:,3),xgrid,ygrid))

另一个选项是tricontour,它也适用于不规则数据集

tri = delaunay(test(:,1),test(:,2));

figure;
tricontour(tri,test(:,1),test(:,2),test(:,3));

您可以在https://www.mathworks.com/matlabcentral/fileexchange/38858-contour-plot-for-scattered-data/content/tricontour.m

找到tricontour

如果表面不凸,

然后你需要从tri移除部分三角测量,因为delaunay

的性质