我想在MATLAB中找到两个分布之间的重叠区域。我在Python (Calculate overlap area of two functions)中找到了一个解决方案,但不幸的是,我不得不使用MATLAB来解决这个问题。
下面是两个简单正态分布(y1,y2)的示例。我想计算一下这些分布之间的重叠面积。
x = linspace(-15, 15);
y1 = normpdf(x, -5, 2.7)*5000;
y2 = normpdf(x, +5, 2.9)*5500;
% PLOT
plot(x, y1)
hold on
plot(x, y2) 发布于 2021-08-19 15:58:24
正如您可能看到的,并且如this answer中所示,您要计算的面积是min(y1,y2)的积分。

所以首先创建向量y,它是一个1x100 double向量,就像y1和y2一样。
y=min(y1,y2)然后,基于Riemann sum概念,您应该计算向量y的每个元素下的区间长度。由于代码linspace(-15, 15)第一行中的linspace函数已将长度为30的间隔划分为100部分,因此间隔应为:
IntevalLength = (15-(-15))/size(y,2)因此,Riemann integral中每个矩形的面积计算如下:
AreaOfRectangles = IntevalLength * y;AreaOfRectangles的总和将给出照片中绿色部分的面积。
>> sum(AreaOfRectangles)
ans =
385.6763https://stackoverflow.com/questions/68842134
复制相似问题