概述
本文章涉及到 三维云图显示、二维曲面插值和区域图形显示三个技术点
一定区域的三维数据,比如
求K = 25456000*(1-4*(z/1000)^2)^(1/2);
K是 d1和d2的应变量,也间接是 x和z的二元函数。
首先我们根据d1和d2的关系,可以打印出来三维散点图,显示如下:
是一个有范围的空间曲面。
对这个曲面进行拟合,使用 scatteredInterpolant 方法。
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);
得到拟合的曲面
两张图放在一起,且 colormap设置为 hsv
如果我们只想要交叠部分的mesh显示,该怎么办?
1、需要知道交叠区域的范围
2、把范围之外的数据都设为NaN,mesh surf等直接就不显示了
接下来,怎么找这个区域?
先投影到二维,找到二维封闭曲线的边界
k = boundary(x,y);
outline = [x(k),y(k)];
我们有了 投影区域,还有meshgrid的每个点
对meshgrid的数据挨个判断,如果 在xy平面的投影点 在区域内,那么保留,否则置为NaN
最后
以上就是糟糕石头为你收集整理的Matlab三维数据区域显示问题的全部内容,希望文章能够帮你解决Matlab三维数据区域显示问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复