我在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矩阵,其中列为x
,y
和f(x,y)
。现在我需要轮廓绘制它。
但是,它不是meshgrid的形式。有任何想法,如何以contour
函数可以绘制的形式快速转换它?
答案 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));
找到tricontour
如果表面不凸,
然后你需要从tri
移除部分三角测量,因为delaunay