首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用Matlab提取数据绘制二维等高线

利用Matlab提取数据绘制二维等高线
EN

Stack Overflow用户
提问于 2015-10-21 17:06:50
回答 1查看 333关注 0票数 1

我有一个3个空间坐标x,y,z和一个振幅形式的数据集,下面是一小部分数据:

代码语言:javascript
运行
复制
[        0    2.9373    0.4646    2.9926
    0.8384    1.5338    1.0000    1.0016
         0    0.7619    0.5051    1.0033
    1.0000    3.5288    0.6667    2.9894
         0    0.5013    0.4343    1.0037
    1.0000    2.8070    0.4848    2.9935
    0.7980    4.0000    0.8586    2.9872
    1.0000    0.1404    0.0707    1.0043
    1.0000    1.7845    0.1818    1.0007
    0.9798    3.1679    1.0000    2.9913]

我想要的是2D等高线图,其中界面由等高线级别表示,比如说2.0 +/- 0.05。

首先,我首先将数据设为2D,因此选择+/- 0.01范围内的值z。那我就只剩下x,y,amplitude了。

然后,我使用this提取满足data(:,4)在2.0 +/- 0.05范围内的数据集。

然而,现在剩下的实际上是绘制等高线图。我尝试过contour,但它要求数据具有meshgrid格式,但它没有。所以我的问题是,绘制提取数据的等高线图最简单的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-10-21 17:34:36

您应该能够为您的散乱数据创建插值函数,如下所示:

代码语言:javascript
运行
复制
F_interp = scatteredInterpolant(x,y,amplitude);

然后设置插值点的网格网格(使用可能基于原始数据的限制和大小):

代码语言:javascript
运行
复制
xMin = min(x);
xMax = max(x);
yMin = min(y);
yMax = max(y);
Nx = 2*length(x);
Ny = 2*length(y);
xpts = linspace(xMin,xMax,Nx);
ypts = linspace(yMin,yMax,Ny);
[X,Y] = meshgrid(xpts,ypts);

在这些网格点对数据进行插值:

代码语言:javascript
运行
复制
A = F_interp(X,Y);

现在将插值数据传递给MATLAB contour函数:

代码语言:javascript
运行
复制
contour(X,Y,A);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33255161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档