在Matlab中计算网格曲面下的体积

在Matlab中计算网格曲面下的体积,matlab,integration,interpolation,volume,Matlab,Integration,Interpolation,Volume,我有一个非均匀分布的x,y,z数据,东距,零距和厚度,我用网格,网格数据和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.4

我有一个非均匀分布的x,y,z数据,东距,零距和厚度,我用网格,网格数据和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对数据进行插值,使其在席、彝、子网格上均匀间隔。因此,您可以将所有zi值相加,然后将结果乘以基面积,即dx*dy:

如果某些zi值为NaN,则改为:

vol = dx*dy*sum(zi(~isnan(zi)));

谢谢你,迈克尔。不幸的是,当我尝试上述操作时,我得到了大量的“NaN”-可能是因为griddata生成了大量NaN。您知道如何在vol计算中排除这些值吗?假设所有NaN值都表示零。问题不是很清楚,但是@ USE2663548,你应该考虑是否要做内插。因此,请思考NaN值的含义
vol = dx*dy*sum(zi(~isnan(zi)));