罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经退休,不会被更新。

计算 区域体积下表面

最近有一个电子邮件使轮MathWorks如何计算 区域体积下表面。毫不奇怪,有几个方法选择,基于每个发送者的倾向。这里有一些方法的。

内容

数据已经在常规电网

如果你已经是在规则的网格数据,您可以简单地调用trapz在两次,一次X尺寸,一旦Y。这是一个例子。让我们先做一些随机的x和y点。

xdata = [0;100兰特(1);1);ydata = [0;100兰特(1);1);x =排序(xdata);y =排序(ydata);

现在,让我们计算网格采样功能。然后使用trapz两次。

(X, Y) = meshgrid (X, Y);Z = x ^ 2。*罪(3 * (x - y));trapz (y, trapz (x, Z, 2), 1)
ans = 0.13173

让我们来比较一下使用的结果dblquad

F = @ (x, y) (x ^ 2)。*罪(3 * (x - y));dblquad (F, 0 1 0,1)
ans = 0.13173

分散的数据:找到凸包

MATLAB有能力处理分散数据以多种方式。我刚刚显示,使用meshgrid技术集成一个函数,你知道通过抽样,和比较结果数值积分相同的函数生成的样本。我会利用一些较新的计算几何功能在MATLAB下一个尝试。

负载海底山minz = min (z);zadj = z-min (z);

注意,我“规范化”的深度数据(z),因为它是负的,改变到数组中zadj都是负值。接下来,我创建一个interpolant从分散的数据。然后把这个函数使用quad2d,但在此之前削减的最大和最小值xy所以我不会遇到(外推值)。

F2 = TriScatteredInterp (x, y, zadj);q1 = quad2d (@ (x, y) F2 (x, y), 211.1,211.4, -48.35, -48年,“AbsTol”,0.01)
q1 = 136.04

分散的数据:找到了 区域体积

如果你有访问权曲线拟合工具箱,您可以利用拟合相对新功能的表面。我将使用相同的海底山数据和之前一样,创建一个适合数据,,从来自健康的功能,使用quad2d再次计算 区域体积。

f = fit (zadj (x, y),“linearinterp”);,211.4 q2 = quad2d (f, 211.1, -48.35, -48年,“AbsTol”,0.01)
q2 = 136.04

你怎么处理分散数据?

如果您有分散的数据代表一个表面,你如何思考和处理,数值或拟合的函数一些吗?你有其他方法吗?请让我知道在这里




使用MATLAB®7.12发表

|