Matlab 如何减去单位平方外椭圆的面积?

Matlab 如何减去单位平方外椭圆的面积?,matlab,ellipse,Matlab,Ellipse,我在matlab代码中将单位平方定义为一个区域,并创建了任意大小的椭圆,所有椭圆都以单位平方为中心 然而,仅仅因为它们位于单位正方形的中心并不意味着它们的所有面积都在单位正方形内 我想只考虑单位正方形内部的面积,所以我计算出每个随机生成的椭圆的总面积,但我不知道如何减去单位正方形外的面积。< /P> 下面是创建椭圆并计算其面积的代码部分: a = rand(16,1); totarea = zeros(1,16); for i = 1:4:16 ellipse(a(i)/2,a(i+1)/2

我在matlab代码中将单位平方定义为一个区域,并创建了任意大小的椭圆,所有椭圆都以单位平方为中心

然而,仅仅因为它们位于单位正方形的中心并不意味着它们的所有面积都在单位正方形内

我想只考虑单位正方形内部的面积,所以我计算出每个随机生成的椭圆的总面积,但我不知道如何减去单位正方形外的面积。< /P> 下面是创建椭圆并计算其面积的代码部分:

a = rand(16,1);
totarea = zeros(1,16);

for i = 1:4:16

ellipse(a(i)/2,a(i+1)/2,a(i+2),a(i+3))
totarea(i) = pi*a(i)*a(i+1)/4;

end

b = find(totarea > 0);
totarea = totarea(b);
以下是我生成的内容的照片:

大正方形是单位正方形。广场里面是我感兴趣的区域。正如你所看到的,有一些椭圆覆盖了那个正方形。我想找出每个椭圆在正方形内的面积


我上面生成的代码允许我计算每个椭圆的总面积,但我需要减去正方形外的椭圆面积,我不确定如何编写代码来实现这一点。

一种方法是通过对单位面积进行离散化来近似计算相交面积。 假设每个椭圆由四个参数表示,
x0
y0
a
b
,这样

el( x0, y0, a, b ): ( (x-x0)/a )^2 + ( (y-y0)/b )^2 <= 1

el(x0,y0,a,b):((x-x0)/a)^2+((y-y0)/b)^2不知道你的意思。你能提供一些你想做的事情的图表/说明(或链接到其中一个)吗?我更新了帖子,加入了一个带有更详细说明的图表。首先,为什么你的函数
eliple
需要四个输入?通常椭圆由两个变量定义。。。那么你是如何定义“单位平方”的呢?你能做的是:你可以说每个像素等于你想要使用的单位x厘米/毫米/英寸。然后你可以计算出椭圆和“单位平方”内的像素数。这不会产生准确的面积,但会产生真实的数据。查看相关链接:+1。不过这是个问题。为什么在最后一次求和时要将
h
平方?为什么不直接乘法呢?我知道为什么,但我不完全确定。@kkuilla
h^2
是一个像素的面积,单位为平方。非常感谢!这正是我要找的!(:
h = 1e-3; % discretization accuracy
[x y] = meshgrid( 0:h:1, 0:h:1 ); % discretizing the unit square
el = ( (x-x0)/a ).^2 + ( (y-y0)/b ).^2 <= 1; % set all points of ellipse that are inside 
intersect_area = sum( el(:) ) * h * h;