使用MATLAB计算表面下的体积

时间:2013-08-05 07:26:47

标签: matlab

我有一些表面的数据三元组。例如,我有三个(x,y,z)点:(0,0,0.5),(1,0,0.75)和(0 1 1)。谁能给我一些关于如何使用MATLAB计算这个表面下的体积的建议? 提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要使用功能的double integral z:R2 - > R上。

但请注意,您正在处理离散值,因此只能近似积分。具体来说,你有一些连续函数的样本z:R2 - > R,在特定的(x,y)值,即你给出的点。

最简单的近似是使用Zero-Order-Hold(ZOH),归结为假设你的表面由高度'z',宽度'dx'和长度'dy'('dx'组成的盒子组成'和'dy'是指定x和y的分辨率,并假定为常量)。然后你有: V = dx * dy * Sum_i {z_i}

其他方法会使用更复杂的interpolation方法。结帐Matlab的interp2


通过ZOH的Matlab天真音量:

dx = 0.1;                   % x-resolution
dy = 0.1;                   % y-resolution
x = 0:dx:1;
y = 0:dy:1;
[xs, ys] = meshgrid(x,y);   % let there by 2D!
z = abs(sin(pi*(xs-ys)));   % the surface (computed over the meshgrid)...
surf(x,y,z);                % ...and what a nice surface it is!
V = dx*dy*sum(z(:));        % take the volume