在Matlab中对离散数据点进行积分

时间:2017-03-23 13:33:35

标签: matlab integration numerical

我需要在Matlab中计算某些离散数据点上函数的积分。我有每个点的绝对坐标: X = [1,2.65,3.25,3.33,15.65] Y = [10,31,15,-6,1] 我试图使用trapz(x,y)函数,但x必须是数据点之间的间距,而不是数据点的x坐标。

计算这种集成的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

使用integral2,您可以在1D中指定航点作为选项。使用diff进行2D集成时,似乎不能。

您似乎还有一个积分点的2D矩形网格?

在这种情况下,只需根据平均间隔长度(通过% get grid x = [1, 3, 7, 15]'; y = [3, 6, 8]; [xi, yi] = ndgrid(x, y); % get weights h = diff(x, [], 1); wx = ([h; 1] + [1; h]) / 2; h = diff(y, [], 2); wy = ([h, 1] + [1, h]) / 2; w = wx * wy; % calculate function f = func(xi, yi); % integration is weighted summation int = sum(f(:) .* w(:)); )计算权重,然后求和。由于您的集成网格是固定的,因此数值积分的精度无论如何都是不可控制的,并且取决于您将要集成的功能。

let makeGreeting = (greeting, error) => {
  return (fname, sname) => {
    return fNames.includes(fname) && sNames.includes(sname)
      ? greeting + ' ' + fname + ' ' + sname
      : error;
  };
};

let sayHello = makeGreeting('Hello', 'Name not found');
sayHello('john', 'doe');

边界必须小心对待。此外,您的坐标列表需要进行排序。