Matlab 中离散数据点的积分

问题描述 投票:0回答:1

我需要在Matlab中计算函数在一些离散数据点上的积分。我有每个点的绝对坐标: x=[1,2.65,3.25,3.33,15.65] y=[10,31,15,-6,1] 我试图使用

trapz(x,y)
函数,但 x 必须是数据点之间的间距,而不是数据点的 x 坐标。

计算此类积分的最简单方法是什么?

matlab numeric numerical-integration
1个回答
0
投票

使用

integral
,您可以指定一维路径点作为选项。使用
integral2
进行 2D 集成,似乎你不能。

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

在这种情况下,只需根据平均间隔长度(通过

diff
)计算权重,然后求和。由于积分网格是固定的,数值积分的精度无论如何都是不可控的,并且取决于您要积分的函数。

% 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(:));

必须谨慎对待边界。另外,您的坐标列表需要排序。

© www.soinside.com 2019 - 2024. All rights reserved.