假设我测量了两个信号
V = V(t) and U = U(t)
是时间周期性的,它们之间存在相位差。当在图V vs U
中相互绘制时,它们形成了一个Lissajous图,我想计算它内部的区域。
是否有算法进行此类计算?
我想用Python解决这个问题。但是,非常感谢任何语言或算法的响应。
可以使用以下表达式生成V和U信号的示例:
V(t) = V0*sin(2*pi*t) ; U(t) = U0*sin(2*pi*t + delta)
图1显示V,U
和t
的{{1}}与V0=10, U0=5, t=np.arange(0.0,2.0,0.01)
的图表。
图2显示了相应的Lissajous数字delta = pi/5
vs V
。
这是一个更普遍问题的具体问题:如何计算用离散U
数据集获得的闭合路径积分?
答案 0 :(得分: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)
对于通常的Lissajous形状的最外面的曲线区域,我会尝试这个:
找到信号期
所以找T
这样:
U(t) = U(t+T)
V(t) = V(t+T)
t=<0,T>
我会使用极坐标系,其中心等于间隔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 )
并且只记住每个角度位置的最大半径点。这可以通过计算与重叠段的折线交叉来使用阵列(限制角度精度)或几何形状来完成。并删除内部零件。
从采样数据中计算区域
因此,通过对覆盖整个圆的每个角度位置的饼图三角形求和来计算面积。
这可能不适用于异国情调的形状。
答案 2 :(得分:0)
以上两种解决方案 - @ MBo和@Spektre(以及评论中的@meowgoesthedog) - 都运行正常。谢谢你们。
但我找到另一种方法来计算椭圆 Lissajous曲线的区域A
:使用A = Pi*a*b
公式(a
和b
分别是椭圆的主要和次要半轴。
步骤:
1 - 查找T
(或V
)信号的句点U
;
2 - 在时间间隔0<t<T
中:
2.a - 计算V
和U
(V0
和U0
)的平均值,以确定椭圆的中心;
2.b - 使用以下方式计算距离r(t)
,V0
的距离U0
:
r(t)=sqrt( (U(t)-U0)^2 + (V(t)-V0)^2 )
3 - 使用以下方式查找a
和b
值
a = max(r(t)); b = min(r(t))
4 - 计算A
:A = Pi*a*b
如果U,V信号是正弦曲线并具有相同的频率,则Lissajous曲线将始终为椭圆曲线。
抓住机会,我将针对V,U信号为三角形并具有相同频率的情况提出解决方案。在这种情况下,Lissajous曲线将是平行四边形,然后可以使用A
计算其面积A = 2*|D|*|d|*sin(q)
,其中|D|
和|d|
分别是主要长度平行四边形的小和半对角线和q
是矢量D
和d
之间的角度。
对椭圆形情况重复步骤1和2.
在第3步中,我们将:
|D| = max(r(t)) = r(t1); |d| = min(r(t)) = r(t2)
4&#39; - 获取t1
和t2
并使用它们来获取坐标(V(t1)=V1
,U(t1)=U1
)和(V(t2)=V2
,U(t2)=U2
)。然后,向量D
和d
可以写为:
D=(V1,U1)-(V0,U0); d=(V2,U2)-(V0,U0)
5&#39; - 计算q
和D
之间的角度d
;
6&#39; - 执行A
:A = 2*|D|*|d|*sin(q)