繁体   English   中英

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

[英]Integral on discrete data points in Matlab

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

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

使用integral您可以在1D中指定航点作为选项。 使用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(:));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM