【问题标题】:Calculate the volume under a gridded surface in Matlab在 Matlab 中计算网格表面下的体积
【发布时间】:2013-08-08 07:57:06
【问题描述】:

我有一个非均匀间隔的 x、y、z 数据(Eastings、Nothings 和厚度),我使用 meshgridgriddatasurf 将其网格化并绘制为表面。

我想计算这个表面下的体积,但我正在努力将这个问题的其他答案应用于我的数据集和有问题的代码(我是一个完整的 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)

【问题讨论】:

    标签: matlab integration interpolation volume


    【解决方案1】:

    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)));
    

    【讨论】:

    • 谢谢迈克尔。不幸的是,当我尝试上述操作时,我得到了大量的“NaN”——可能是因为 griddata 生成了很多 NaN。任何想法如何在 vol 计算中排除这些值?
    • 这假定所有 NaN 值都表示零。问题不是很清楚,但@user2663548 您应该考虑是否要进行插值。 (所以想想 NaN 值的含义)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多