【问题标题】:Calculating Volume under surface using MATLAB使用 MATLAB 计算表面下的体积
【发布时间】:2014-03-13 18:36:06
【问题描述】:

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

【问题讨论】:

  • 3 点不是曲面。根据这三个点如何定义曲面?
  • 还有你说的under是什么意思?您是指从 XY 平面到 Z 值的体积吗?
  • 我正在处理的曲面是一个有界曲面,有 x-y 平面、y-z 平面、z-x 平面和由三元组产生的非均匀平面。体积可能从 XY 平面到 Z 值。
  • 假设您知道公式,它应该是相当简单的。如果你不这样做,它看起来更像是一个math 问题,而不是一个编程问题。

标签: matlab


【解决方案1】:

你需要把你的函数z的double integral: 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多