我只想将IDL代码转换为python代码。对于任何IDL和Python专家来说,这都是一件容易的事。但是对于我来说,这是不可能的,如果有人帮助我翻译这段代码,那么我将非常感谢他/她。
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)
答案 0 :(得分:0)
这是对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)))
答案 1 :(得分:0)
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)))