当在-pi;pi中有随机初始相位的输入音时,我想估计谐波畸变音调的相位。我使用了atan2,Matlab的内置函数,但是-pi或pi的相位跳变使我的相位差计算有困难。
问题如下:有一个非线性系统,我想估计系统的响应(振幅和相位响应)。我插入许多音调为xn = Acos(2_pi_fn*t+b),其中fn是频率,b是-pi;pi内部的初始随机相位,它随音调的变化而变化。如果一个音调具有初始相位b,则二阶谐波失真( HD )具有c=2b相位,第三次HD具有d=3b相位。HD2和HD3的相位差分别为c/2-b和d/3-b。由于系统的记忆效应,相位差不再为零。
问题:如果输入信号的相位很大,例如70度,那么HD3相位是210度,当相位角>180时,atan2操作跳到-180,HD3相位变成-150度,而不是210度。理论上,cosd(210) = cosd(-150)。然而,我想找到的是相位差。这就是为什么,(-150/3-70)会导致错误的结果(如果没有记忆效果,应该是0)。如果输入信号具有较大的负相位,则情况与HD2和HD3的情况相似。主要原因是antan2对-pi;pi的限制,我想将其扩展到-3pi;3pi。
请帮帮忙。
非常感谢。问候
发布于 2022-03-16 07:49:35
您想要的函数是unwrap
,例如,
>>> angles=[-0.7*pi -0.9*pi 0.9*pi 0.7*pi]
angles =
-2.1991e+00 -2.8274e+00 2.8274e+00 2.1991e+00
>>> unwrap(angles)/pi
ans =
-7.0000e-01 -9.0000e-01 -1.1000e+00 -1.3000e+00
https://stackoverflow.com/questions/71492231
复制相似问题