首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算两个分布的重叠面积f

计算两个分布的重叠面积f
EN

Stack Overflow用户
提问于 2021-08-19 04:40:32
回答 1查看 118关注 0票数 0

我想在MATLAB中找到两个分布之间的重叠区域。我在Python (Calculate overlap area of two functions)中找到了一个解决方案,但不幸的是,我不得不使用MATLAB来解决这个问题。

下面是两个简单正态分布(y1,y2)的示例。我想计算一下这些分布之间的重叠面积。

代码语言:javascript
复制
        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) 

Image of overlapping distributions

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 15:58:24

正如您可能看到的,并且如this answer中所示,您要计算的面积是min(y1,y2)的积分。

所以首先创建向量y,它是一个1x100 double向量,就像y1y2一样。

代码语言:javascript
复制
y=min(y1,y2)

然后,基于Riemann sum概念,您应该计算向量y的每个元素下的区间长度。由于代码linspace(-15, 15)第一行中的linspace函数已将长度为30的间隔划分为100部分,因此间隔应为:

代码语言:javascript
复制
IntevalLength = (15-(-15))/size(y,2)

因此,Riemann integral中每个矩形的面积计算如下:

代码语言:javascript
复制
AreaOfRectangles = IntevalLength * y;

AreaOfRectangles的总和将给出照片中绿色部分的面积。

代码语言:javascript
复制
>> sum(AreaOfRectangles)

ans =

  385.6763
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68842134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档