您的位置:首页 > 其它

IDL语言的atan2函数

2016-06-03 10:55 281 查看
在进行算法编写的时候需要用到atan2, 但是IDL的函数库中并没有内置这个函数, 于是就根据网上已经有的资料将代码由C转到IDL, 亲测可行. 希望大家可以把更多的时间用在其他有意义的事情上.

本人IDL经验不多, 如果下面的代码阁下发现改进的地方, 欢迎在底下评论.

C的源码参考: http://www.eeworm.com/read/252366/4408667

注意:本函数的xy和matlab中atan2的xy是相反的。

比如:

matlab:atan2(3,4) = 0.6435

IDL:atan2(4,3) = 0.6435

转译IDL后代码如下:

function atan2, x, y

absy = 0d & absx = 0d & val = 0d

IF(x eq 0 and y eq 0)THEN BEGIN

return, 0 ; ERROR! ENDIF

absy = abs(y) & absx = abs(x)

IF(absy - absx eq absy)THEN BEGIN

IF(y lt 0)THEN BEGIN

return, -!pi/2

ENDIF ELSE BEGIN

return, !pi/2

ENDELSE ENDIF

IF(absx - absy eq absx)THEN BEGIN

val = 0 ENDIF ELSE BEGIN

val = atan(y/x) ENDELSE

IF(x gt 0)THEN BEGIN

return, val ENDIF

IF(y lt 0)THEN BEGIN

return, val-!pi ENDIF

return, val+!pi

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 IDL