将简单的 IDL 参数代码转换为 python 代码
Converting the simple IDL argument code to python code
只是我想将 IDL 代码转换为 python 代码。对于任何 IDL 和 Python 专家来说,这都是一项简单的任务。但这对我来说是不可能的,如果有人帮助我翻译这段代码,那么我将感谢him/her。
RelA = ABS((image1 ) - (image2))
index = where(RelA gt 180.D)
RelA[index] = 360.D- RelA[index]
index = where(RelA le 180.)
RelA[index] = 180.D- RelA[index]
CosRe = cos(RelA * !pi / 180.D)
直接转换为 NumPy:
#RelA = ABS((image1 ) - (image2))
RelA = np.abs(image1 - image2)
#index = where(RelA gt 180.D)
index = np.where(RelA > 180.0)
#RelA[index] = 360.D- RelA[index]
RelA[index] = 360.0 - RelA[index]
#index = where(RelA le 180.)
index = np.where(RelA <= 180.0)
#RelA[index] = 180.D- RelA[index]
RelA[index] = 180.0 - RelA[index]
#CosRe = cos(RelA * !pi / 180.D)
CosRe = np.cos(np.radians(RelA))
要翻译您的第二段代码,只需删除 "D" 说明符(Python 标量会自动提高精度),使用“**”代替“^”,并使用 Numpy 的 cos
函数:
D1 = (0.00864 + (0.0000065)) * (0.86D)**(-(3.916 + (0.074 * 0.86)+ (0.05/0.86D)))
D2 = 0.008569 * ((0.8585)**(-4))*(1. + (0.0113 *(0.8585)**(-2)) + (0.00013 * (0.8585D)^(-4)))
D1 = (Pz/Po) * (0.00864 + (0.0000065 * z)) * (0.55)**(-(3.916 + (0.074 * 0.55)+ (0.05/0.55)))
Pr1 = (3./16.*np.pi)* (2/(2+delta))* ((1+delta)+((1+delta)*(np.cos(Agl) * np.cos(Agl))))
Pr2 = (3./16.*np.pi) * (1 + (np.cos(Agl) * np.cos(Agl)))
Pz=image1
Po=image2
Agl=image3
delta=0.0139
D1 = (0.00864D + (0.0000065D )) * (0.86D)^(-(3.916 + (0.074 * 0.86D)+ (0.05/0.86D)))
D2 = 0.008569D * ((0.8585D)^(-4))*(1.D + (0.0113D *(0.8585D)^(-2)) + (0.00013D * (0.8585D)^(-4)))
D1 = (Pz/Po) * (0.00864D + (0.0000065D * z)) * (0.55D)^(-(3.916 + (0.074 * 0.55)+ (0.05/0.55)))
Pr1 = (3.D/16.D*!dPi)* (2/(2+delta))* ((1+delta)+((1+delta)*(cos(Agl) * cos(Agl))))
Pr2 = (3.D/16.D*!Pi) * (1 + (cos(Agl) * cos(Agl)))
只是我想将 IDL 代码转换为 python 代码。对于任何 IDL 和 Python 专家来说,这都是一项简单的任务。但这对我来说是不可能的,如果有人帮助我翻译这段代码,那么我将感谢him/her。
RelA = ABS((image1 ) - (image2))
index = where(RelA gt 180.D)
RelA[index] = 360.D- RelA[index]
index = where(RelA le 180.)
RelA[index] = 180.D- RelA[index]
CosRe = cos(RelA * !pi / 180.D)
直接转换为 NumPy:
#RelA = ABS((image1 ) - (image2))
RelA = np.abs(image1 - image2)
#index = where(RelA gt 180.D)
index = np.where(RelA > 180.0)
#RelA[index] = 360.D- RelA[index]
RelA[index] = 360.0 - RelA[index]
#index = where(RelA le 180.)
index = np.where(RelA <= 180.0)
#RelA[index] = 180.D- RelA[index]
RelA[index] = 180.0 - RelA[index]
#CosRe = cos(RelA * !pi / 180.D)
CosRe = np.cos(np.radians(RelA))
要翻译您的第二段代码,只需删除 "D" 说明符(Python 标量会自动提高精度),使用“**”代替“^”,并使用 Numpy 的 cos
函数:
D1 = (0.00864 + (0.0000065)) * (0.86D)**(-(3.916 + (0.074 * 0.86)+ (0.05/0.86D)))
D2 = 0.008569 * ((0.8585)**(-4))*(1. + (0.0113 *(0.8585)**(-2)) + (0.00013 * (0.8585D)^(-4)))
D1 = (Pz/Po) * (0.00864 + (0.0000065 * z)) * (0.55)**(-(3.916 + (0.074 * 0.55)+ (0.05/0.55)))
Pr1 = (3./16.*np.pi)* (2/(2+delta))* ((1+delta)+((1+delta)*(np.cos(Agl) * np.cos(Agl))))
Pr2 = (3./16.*np.pi) * (1 + (np.cos(Agl) * np.cos(Agl)))
Pz=image1
Po=image2
Agl=image3
delta=0.0139
D1 = (0.00864D + (0.0000065D )) * (0.86D)^(-(3.916 + (0.074 * 0.86D)+ (0.05/0.86D)))
D2 = 0.008569D * ((0.8585D)^(-4))*(1.D + (0.0113D *(0.8585D)^(-2)) + (0.00013D * (0.8585D)^(-4)))
D1 = (Pz/Po) * (0.00864D + (0.0000065D * z)) * (0.55D)^(-(3.916 + (0.074 * 0.55)+ (0.05/0.55)))
Pr1 = (3.D/16.D*!dPi)* (2/(2+delta))* ((1+delta)+((1+delta)*(cos(Agl) * cos(Agl))))
Pr2 = (3.D/16.D*!Pi) * (1 + (cos(Agl) * cos(Agl)))