2017-09-01 148 views
2

假设我有两个信号有没有算法来计算利萨如图的面积?

V = V(t) and U = U(t) 

是周期性的时间与他们之间的相位差的测量。当在图V vs U中彼此相互作图时,它们形成利萨如图,我想计算其中的面积。

是否有这样的计算算法?

我想用Python解决这个问题。但是,以任何语言或算法做出响应将非常感激。可以使用类似的表达式来产生V和U信号的

实例:

V(t) = V0*sin(2*pi*t) ; U(t) = U0*sin(2*pi*t + delta) 

图1示出的V,U VS tV0=10, U0=5, t=np.arange(0.0,2.0,0.01)delta = pi/5的曲线图。

img1

以及图2显示了相应的Lissajous图V VS U

img2

这是一个更普遍的问题的一个具体的问题:如何计算与离散(x_i,y_i)数据集获得积分的闭合路径?

+0

可以使用极性区域在't'是关系到极角的情况积分。在一般情况下,您需要按极角对点进行排序,并将由每对相邻点和原点形成的三角形的面积相加 – meowgoesthedog

+3

如果您要求提供任何李沙育图的面积,则必须定义你的意思是按照这个曲线的面积https://en.m.wikipedia.org/wiki/Lissajous_curve#/media/File%3ALissajous_curve_5by4.svg – algrid

+0

是@algrid,很难定义这个区域是什么一种利萨如曲线(我的猜测是外轮廓定义了该区域)。但对于使用V和U信号以相同频率生成的曲线(我所问),我们没有这个问题。 –

回答

2

查找(关闭)参数曲线的面积在直角坐标系中,可以使用格林公式(4-th formula here

A = 1/2 * Abs(Integral[t=0..t=period] {(V(t) * U'(t) - V'(t) * U(t))dt}) 

但请记住,解释 - 什么是下自相交曲线实际面积 - 是模糊的,如@algrid在评论中发现

1

通常为李萨形状的最外面的曲线区域我想试试这个:

  1. 信号的查找周期

    所以找到T例如:上t=<0,T>

    U(t) = U(t+T) 
    V(t) = V(t+T) 
    
  2. 样本数据我会使用极坐标系中心等于平均U,V坐标上间隔t=<0,T>和称它为U0,V0。转换并存储数据在极坐标这样:

    a(t)=atan2(V(t)-V0 , U(t)-U0) 
    r(t)=sqrt((U(t)-U0)^2 + (V(t)-V0)^2) 
    

    并记住只有每个角度位置最大半径点。这可以通过数组(通过角度限制精度)或通过计算与重叠线段的折线交点来完成。并去除内部零件。

  3. 计算从采样数据

    面积因此,通过饼图三角形求和用于覆盖整个圆每个角位置计算的区域。

这可能不适用于异国情调的形状。

0

以上两种解决方案 - by @MBo和@Spektre(以及评论中的@meowgoesthedog) - 都可以正常工作。感谢你们。

但我发现另一种方式来计算面积的椭圆利萨如曲线的A:使用A = Pi*a*b式(ab分别是主要和次要半轴的椭圆的)。

步骤:

1 - 查找V(或U)信号的周期T;

2 - 在所述时间间隔0<t<T

2.A - 计算的VUV0U0)的平均值,以便确定椭圆的中心;

2.B - 从使用点(V0U0)计算距离r(t): - :

a = max(r(t)); b = min(r(t)) 

4 - 计算A

r(t)=sqrt((U(t)-U0)^2 + (V(t)-V0)^2) 

3使用查找ab值: A = Pi*a*b

利萨如曲线总是elli如果U,V信号类似于正弦曲线并且具有相同的频率

抓住机遇,我将针对V,U信号为三角形且频率相同的情况提出解决方案。在这种情况下,利萨如曲线将是一个平行四边形,那么就可以使用A = 2*|D|*|d|*sin(q),其中|D||d|分别是,主要和次要半对角线平行四边形的q的长度计算出其面积A是之间的角度载体Dd

对于椭圆的情况重复步骤1和2。

在步骤3中,我们将有:

|D| = max(r(t)) = r(t1); |d| = min(r(t)) = r(t2) 

4' - 获取t1t2并利用它们来获取坐标(V(t1)=V1U(t1)=U1)和(V(t2)=V2U(t2)=U2)。然后,矢量Dd可以写为:

D=(V1,U1)-(V0,U0); d=(V2,U2)-(V0,U0) 

5' - 计算Dd之间的角度q;

6' - 执行的A计算:A = 2*|D|*|d|*sin(q)