【问题标题】:Converting the simple IDL argument code to python code将简单的 IDL 参数代码转换为 python 代码
【发布时间】:2019-06-12 04:38:33
【问题描述】:

我只是想将 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)

【问题讨论】:

    标签: python idl-programming-language


    【解决方案1】:

    这是到 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)))
    

    【讨论】:

    • 感谢您的友好回复。我有点担心另外五行 IDL 代码,你能帮我翻译一下这段代码吗?如果你能帮助我,我将不胜感激。
    【解决方案2】:
    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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2018-11-05
      • 2015-01-03
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多