Matlab wrapToPi和pythonnp.展开

2024-10-01 07:47:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将我的代码从Matlab移植到Python。 除了Matlab的功能外,大部分功能似乎都能正常工作

wrapToPi

我正在使用numpy的展开功能

^{pr2}$

模仿wrapToPi,但它似乎不起作用。在Matlab页面上,上面写着

lambdaWrapped = wrapToPi(lambda) wraps angles in lambda, in radians, to the interval [−pi pi]. pi maps to pi and −pi maps to −pi. (In general, odd, positive multiples of pi map to pi and odd, negative multiples of pi map to −pi.)

wrapToPi与np.展开?在


Tags: andoftolambda代码in功能numpy
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:51

Octave的mapping插件有以下代码:

function xwrap = wrapToPi(x)

  xwrap = rem (x, 2*pi);
  idx = find (abs (xwrap) > pi);
  xwrap(idx) -= 2*pi * sign (xwrap(idx));

endfunction

numpy和{}(可能还有MATLAB)中的unwrap是完全不同的。在

^{pr2}$

numpy中,我可以用以下方式复制:

In [274]: x = np.linspace(-2*np.pi, 2*np.pi, 10)
In [275]: x
Out[275]: 
array([-6.28318531, -4.88692191, -3.4906585 , -2.0943951 , -0.6981317 ,
        0.6981317 ,  2.0943951 ,  3.4906585 ,  4.88692191,  6.28318531])
In [276]: xwrap=np.remainder(x, 2*np.pi)
In [277]: mask = np.abs(xwrap)>np.pi
In [278]: xwrap[mask] -= 2*np.pi * np.sign(xwrap[mask])
In [279]: xwrap
Out[279]: 
array([ 0.       ,  1.3962634,  2.7925268, -2.0943951, -0.6981317,
        0.6981317,  2.0943951, -2.7925268, -1.3962634,  0.       ])

相关问题 更多 >