考虑数据边界的二维等高线图

8次浏览(最近30天)
arzedaily4121
arzedaily4121 2021年8月12日
回答: darova 2021年8月15日
你好
我有一些离散的数据,称x和y为点的坐标,每个点的强度为z。我将它们存储在3个向量中,即testX、testy和testZ。我尝试用以下代码绘制二维等高线图:
n=5;
[X,Y]=meshgrid(linspace(min(testX)、max(testX)、n)、linspace(min(testY)、max(testY)、n));
Z = griddata (testZ testX,暴躁的,X, Y);
%画一张图表。
图形
轮廓f(X,Y,Z,30,“LineColor”,“没有”);
我得到的轮廓如图1所示。问题是我的数据的boundray不应该是如图1所示的矩形,而应该是如图2所示的矩形。
你能告诉我如何制作一个考虑数据的轮廓线的等高线图吗?
谢谢
2评论
约翰·德雷科
约翰·德雷科 2021年8月13日
你有离散的数据点。这意味着数据之间有空间。griddata如何知道沿着一条边的凹孔不仅仅是数据点之间要插值的另一个空间?计算机无法读懂你的心思。因此,当它在该域上插值时,它只看到一个简单的矩形。
最好的解决方案是使用能够理解非凸域几何的代码,然后在三角区域上生成等高线图。问题是,MATLAB不提供这个工具。在文件交换中可以找到一些tricontour工具,但是您需要生成该域的三角剖分。
另一种更简单的方法是使用找到的三角剖分法,然后去除那些位于感兴趣领域之外的轮廓。为此,您只需要学习如何使用轮廓C生成轮廓,然后使用多边形(或多边形)来消除位于感兴趣领域之外的轮廓。

登录以发表评论。

答案(2)

darova
darova 2021年8月15日
使用 initmesh 对网
[x,y,z]=峰值(20);
t = linspace(0, -π,20);
(xr,年)= pol2cart (t, 2);%圆形部分
x1=[-3-3 xr];%广场坐标
y1=[3-3-3年+3];%广场坐标
gd =[2;长度(x1); x1(:);日元(:));%整个曲线的几何描述
dl = decsg (gd);%分解
[p,e,t]=initmesh(dl);%建立一个网格
z2=网格数据(x,y,z,p(1,:),p(2,:);%内插Z坐标
ff。面临= t(1:3:)”;%将每个三角形(网格)表示为单独的面
ff.顶点=p';%要点
ff。facevertexcdata = z2 (:);%颜色
ff。facecolor =的插值函数;
ff。edgecolor =“没有”;
补丁(ff)
相同的

春如
春如 2021年8月13日
[x,y,z]=峰值(40);
h=pcolor(x,y,z);
h、 边色=“没有”;
%现在绘制蒙版
持有
ps=多形([-1-11],[3 2 3]);%指定您的形状
绘图(ps,“脸色”,“k”,“FaceAlpha”1);

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!