首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将atan2展开为正负3pi

如何将atan2展开为正负3pi
EN

Stack Overflow用户
提问于 2022-03-16 05:37:55
回答 1查看 71关注 0票数 0

当在-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。

请帮帮忙。

非常感谢。问候

EN

回答 1

Stack Overflow用户

发布于 2022-03-16 07:49:35

您想要的函数是unwrap,例如,

代码语言:javascript
运行
复制
>>> 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71492231

复制
相关文章

相似问题

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