我有一个间隔不均匀的 x、y、z 数据(东距、空值和厚度),我使用
meshgrid
、griddata
和 surf
将其网格化并绘制为曲面。
我想计算这个表面下的体积,但我正在努力将这个问题的其他答案应用到我的数据集和相关代码中(我是一个完整的 Matlab 初学者)。
有什么想法可以做到这一点(在 Matlab 版本 2011b 上)?预先感谢。
load E.txt, load N.txt, load Z.txt;
[xi, yi] = meshgrid(25.351639:0.00025:25.426483, 36.363799:0.0005:36.458845);
zi = griddata(E,N,Z, xi,yi, 'linear');
surf(xi,yi,zi)
griddata
对数据进行插值,使其在 xi
、yi
、zi
网格上均匀分布。因此,您可以将所有 zi
值相加,并将结果乘以底面积,即 dx*dy
:
dx = 0.00025;
dy = 0.0005;
vol = dx*dy*sum(zi(:));
如果某些
zi
值是 NaN,请改为执行以下操作:
vol = dx*dy*sum(zi(~isnan(zi)));