【问题标题】:Difference between plots in IDLIDL 中地块之间的差异
【发布时间】:2022-01-21 11:22:45
【问题描述】:

我正在处理 IDL 上作为距离函数的两个密度图。我想对它们做的是将它们转换为作为密度函数的距离图并绘制它们的差异,以获得作为密度函数的距离变化。我遇到的问题是,作为距离函数的密度方程之一是不可逆的。 关于我可以做些什么来克服这个问题的任何想法? 提前致谢。这是我试图反转并取其差异的两个图。

lowe = ALOG10(10.)
  uppe = ALOG10(170.)
  re = DINDGEN(100)*(uppe - lowe)/(100 - 1L) + lowe
  r = 10^(re)

  loweB = ALOG10(10.)
  uppeB = ALOG10(170.)
  reB = DINDGEN(100)*(uppeB - loweB)/(100 - 1L) + loweB
  rB = 10^(reB)

pl = plot(r,density_r(r), /XLOG, /YLOG)
plB = plot(r,freq_ratB(r), /OVERPLOT, /XLOG, /YLOG)  

end

FUNCTION density_r, r
  
  return, 4.8e9/r^14 + 3e8/r^6 + 1.4e6/r^2.3
END

 FUNCTION freq_ratB, r
  
  return, 10.*(r/215.)^(-2.8)
END

【问题讨论】:

    标签: plot idl array-difference


    【解决方案1】:

    将距离绘制为密度函数很容易——只需将参数的顺序更改为plot,即:

    p_r = plot(density_r(r), r, /xlog, /ylog)
    plB_r = plot(freq_ratB(r), r, /overplot, /xlog, /ylot)
    

    但是要减去这两个图,差值图的 x 坐标对于差值的两个操作数必须相同。您可以编写一个方程来反转您的函数之一:

    ; intvert freq_ratB
    function r_freq_ratB, density
      compile_opt strictarr
    
      return, 215.0 * exp((alog(density) - log(10.0)) / (-2.8))
    end
    

    那么你可以画出差异:

    p_difference = plot(density, r - r_freq_ratB(density))
    

    如果您无法反转您的函数之一,例如,您正在绘制观测数据,那么您将不得不进行插值。

    【讨论】:

    • 非常感谢。这真的很有帮助!
    猜你喜欢
    • 2023-04-02
    • 2017-10-13
    • 2014-01-21
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多