Matlab三维数据区域显示问题

本文章涉及到 三维云图显示、二维曲面插值区域图形显示三个技术点

一定区域的三维数据,比如

 Matlab三维数据区域显示问题_第1张图片

求K =  25456000*(1-4*(z/1000)^2)^(1/2);

K是 d1和d2的应变量,也间接是 x和z的二元函数。

首先我们根据d1和d2的关系,可以打印出来三维散点图,显示如下:

Matlab三维数据区域显示问题_第2张图片

 是一个有范围的空间曲面。

对这个曲面进行拟合,使用 scatteredInterpolant 方法。

Matlab三维数据区域显示问题_第3张图片

 Method 可以是 'nearest''linear' 或 'natural'

需要构造meshgrid

xlin = linspace(min(x), max(x), 200);

ylin = linspace(min(y), max(y), 200);

 F = scatteredInterpolant(x,y,v,'linear') ;

[X,Y] = meshgrid(xlin, ylin);

vq = F(xq,yq) ; %根据拟合出的函数方程F,给定自变量xq,yq,求出对应的高度值vq。

mesh(xq,yq,vq);

得到拟合的曲面Matlab三维数据区域显示问题_第4张图片

两张图放在一起,且 colormap设置为 hsv

Matlab三维数据区域显示问题_第5张图片

 如果我们只想要交叠部分的mesh显示,该怎么办?

1、需要知道交叠区域的范围

2、把范围之外的数据都设为NaN,mesh surf等直接就不显示了

接下来,怎么找这个区域?

先投影到二维,找到二维封闭曲线的边界

k = boundary(x,y);

outline = [x(k),y(k)];

Matlab三维数据区域显示问题_第6张图片

 

我们有了 投影区域,还有meshgrid的每个点

对meshgrid的数据挨个判断,如果 在xy平面的投影点 在区域内,那么保留,否则置为NaN 

Matlab三维数据区域显示问题_第7张图片 

Matlab三维数据区域显示问题_第8张图片

Matlab三维数据区域显示问题_第9张图片 

 

你可能感兴趣的:(技术,作图,matlab,python,开发语言)