我是靠谱客的博主 糟糕石头,最近开发中收集的这篇文章主要介绍Matlab三维数据区域显示问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

 

求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三维数据区域显示问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部