matlab,求不规则三维图形体积?各位大虾,小弟因最后这个数据处理问题论文迟迟不能写成,求助!:'( 我测量的x,y的坐标规则,但是Z坐标不规则,用surf(x,y,z)函数,从而形成一个不规则的三维图形

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 11:06:05

matlab,求不规则三维图形体积?各位大虾,小弟因最后这个数据处理问题论文迟迟不能写成,求助!:'( 我测量的x,y的坐标规则,但是Z坐标不规则,用surf(x,y,z)函数,从而形成一个不规则的三维图形
matlab,求不规则三维图形体积?
各位大虾,小弟因最后这个数据处理问题论文迟迟不能写成,求助!:'(
我测量的x,y的坐标规则,但是Z坐标不规则,用surf(x,y,z)函数,从而形成一个不规则的三维图形.这个图形能否用matlab能否用matlab求出体积?
如果不能,有什么别的绘图软件不仅能做出图来,还能求出体积?
万分感谢!
ps: 比如这样一个简单的图形求体积:
x=[
-1 -1 -1 -1 -1
-0.5 -0.5 -0.5 -0.5 -0.5
0 0 0 0 0
0.5 .0.5 0.5 0.5 0.5
1 1 1 1 1 ];
y=[
1 0.5 0 -0.5 -1
1 0.5 0 -0.5 -1
1 0.5 0 -0.5 -1
1 0.5 0 -0.5 -1
1 0.5 0 -0.5 -1];
z=[
0.82 0.71 0.63 0.41 0.62
0.83 0.63 0.46 0.4 0.48
0.55 0.47 0.48 0.37 0.52
0.5 0.41 0.49 0.39 0.42
0.52 0.57 0.47 0.45 0.34];
surf(x,y,z);
shading interp;

matlab,求不规则三维图形体积?各位大虾,小弟因最后这个数据处理问题论文迟迟不能写成,求助!:'( 我测量的x,y的坐标规则,但是Z坐标不规则,用surf(x,y,z)函数,从而形成一个不规则的三维图形
我咋看也是个光滑曲面呀,哪来的体积?当然假如xy面到曲面之间全被填充为实体,应该能用循环或积分计算每个xy单位面积上的曲顶柱体的体积,然后求和,我用循环尝试了下:
z=[
0.82        0.71        0.63        0.41        0.62
0.83        0.63        0.46        0.4        0.48
0.55        0.47        0.48        0.37        0.52
0.5        0.41        0.49        0.39        0.42
0.52        0.57        0.47        0.45        0.34];
 
x=[-1:0.5:1]
y=[-1:0.5:1]
surf(x,y,z);
shading interp;
for i=1:5
   for j=1:5 
       M(i,j)=z(i,j)*0.5*0.5(对于每个面积为0.5*0.5的小方格以上的曲顶柱体求体积)
   end
end
sum (sum(M))对体积数组(25个元素体积求和)结果如下:
M =
    0.2050    0.1775    0.1575    0.1025    0.1550
    0.2075    0.1575    0.1150    0.1000    0.1200
    0.1375    0.1175    0.1200    0.0925    0.1300
    0.1250    0.1025    0.1225    0.0975    0.1050
    0.1300    0.1425    0.1175    0.1125    0.0850
>> size(M)
ans =
     5     5
>> sum(M)
ans =
    0.8050    0.6975    0.6325    0.5050    0.5950
>> sum(ans)
ans =
    3.2350
楼主给的数据点太少,导致求曲顶柱体体积的此种运算需要插值法进行加点运算,我偷懒了,没有进行差值运算,毕竟忘了很久了,而且插值法有很多种(据我所知都有3-4种),运用在三维图形中就更麻烦了,所以只是用了楼主给出的25个数据点高程进行最最粗略的估算.
如果嫌此种方法太简单,只要数据够多或者插值法加点很多就可以对求高程的z数组进行编辑以获得更多的高程数据:
假设九个方格共十六个点,各点高程为z(i,j)各点为权重w(i,j)并假设16点权重和为1,则方格中心位置高程插值
Z(i,j)=sum(w(i,j)*z(i,j))九宫16点插值拟合法(16个空间高程点的加权平均,也称三次样条插值)
如果是两个曲面之间的距离,则可使用上面的体积元素之差作为曲顶柱体的高.
拟合完毕了就是照搬公式的体积求和运算:每个高程对应的xy面上的小方格乘以高程,然后对[高程*面积]所有元素求和,就能得到曲顶柱体的近似体积,插值越多,数据点越多,近似越精确!
总体来讲:思路很简单,但是过程复杂,所牵涉的知识比较多,