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;

我咋看也是个光滑曲面呀,哪来的体积?当然假如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面上的小方格乘以高程,然后对[高程*面积]所有元素求和,就能得到曲顶柱体的近似体积,插值越多,数据点越多,近似越精确!

总体来讲:思路很简单,但是过程复杂,所牵涉的知识比较多,希望对您有帮助!

参考资料:曲面插值拟合,曲面高程

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab,求不规则三维图形体积?
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)...

matlab能根据点云计算不规则物体的体积吗
你的三维点云物体,按照z方向分割成很多层,每一层的厚度是dz,然后求出该层有效物体的边界,边界内部的就是有效面积,面积有了,厚度有了,这个曾的体积就有了 其它层算法一样,最后求所有层的和嘛 反正都是积分嘛 思路非常简单

matlab求体积,请问这道题的体积怎麼用matlab求.绘图代码我已经有了但是...
可以转化成三重积分:int(int(int(f,z,z1(x,y),z2(x,y)),y,y1(x),y2(x)),x,a,b)

如何用matlab做出离散点的三维栅格图,并求出体积?(
图形好奇怪啊 clc;clear;X=[89.9 89.9 89.5 89 89 89.6 89.8 89.7 89.2 89.5 88.6 89.4 89.5 91.2 91.2 90.4 89.8 89.8]Y=[2.4 2.4 1.7 1.6 1.6 1 1.2 -0.9 -1.5 -1.6 -1.7 -1.3 -1.2 0.5 1.6 2.5 2 2.2]Z=[-8.5 -8.7 -9 -...

给定8个点用matlab求其形成三维图的体积
x,y,z,x0',y0,'v4');%插值拟合曲面。当然,由于你没有说明xy平面上的条件,所以这里拟合的曲面Z=f(X,Y)定义在x0,和y0的矩形区间内;figure;mesh(X,Y,Z);体积的近似值用下代码 L=sum(sum(abs(Z)));S=abs((y0(2)-y0(1))*(x0(2)-x0(1)));V=L*S; %体积 ...

如何用MATLAB计算球体体积?
1.用MATLAB的simthForm函数计算 代码如下:syms lamda;A=[1-lamda,lamda^2,lamda;lamda,lamda,-lamda;1+lamda^2,lamda^2,-lamda^2];B=smithForm(A);结果为:B = [ 1, 0, 0][ 0, lamda, 0][ 0, 0, lamda^2 + lamda]2.手算 过程为:

用matlab计算由下面2个几何体围成的体积: x^2+y^2+z^2=36,((x-4)\/...
>> triplequad(@(x,y,z)1*(x.^2+y.^2+z.^2<=36 & ((x-4)\/5).^2+((y-1)\/3).^2+((z-2)\/5).^2<=1),-6,9,-6,6,-6,7)ans = 185.7088

Matlab求体积
回复 littlejay 的帖子会用一点,可是当倾斜10度得时候大概注满水是56多单位的高度,要是求每单位高水位体积要剖切56次啊,,

体积怎么计算
1、直接测量法。对于一些规则的物体,如长方体、正方体等,可以通过测量物体的长、宽和高来计算体积。例如,一个长方体的长为3cm、宽为2cm和高为1cm,那么它的体积就是3cm×2cm×1cm=6cm³。2、使用公式法。对于一些不规则的物体,如球体、圆锥体等,可以使用相应的公式来计算体积。例如,一...

求曲面围成的立体体积x=0,y=0,z=0,x=2,y=3与x+y+z=4
图为表达式,以下用matlab求解,你可以手算积分!>> clear >> syms x y >> V=int(int(int(1,0,4-x-y),y,0,3),x,0,2)V = 9 故所谓体积为9

相似回答