IDL绘制黑体辐射曲线

普朗克定律是热红外遥感中常常使用的三大定律之一,描述了黑体辐射能量的情况。绝对黑体的辐射光谱对于研究一切物体的辐射规律具有根本的意义。1900年普朗克引进量子概念,将辐射当做不连续的量子发射,成功地从理论上得出了与实验精确符合的绝对黑体辐射出射度随波长的分布函数。试着用IDL绘出了黑体辐射曲线,利于以后计算黑体辐射出射度,以备不时之需!

普朗克公式:
IDL绘制黑体辐射曲线
 
代码:
  ;+
  ; :Author: caozhigang
  ; :Copyright:UCAS
  ; :blog:blog.sina.com.cn/ahnucao
  ;-
 
PRO PLANK_SPECTRUMCURVES
  ;生成普朗克光谱曲线
  colors=['r','g','b','c','m','y','k']
  wavelengths=FINDGEN(1000,start = 1,increment = 0.1);1_100 um
  radiance = CALC_OMMITRADIANCE(wavelengths,250)
  plots = PLOT(wavelengths,radiance,Name = STRING(250)+'K',colors[0],$
    AXIS_STYLE = 1,xtitle ='wavelength(um)',ytitle = '辐射出射度/(m^2*um)')
  PLOTS.TITLE = '黑体辐射曲线'
  lege = legend(target = plots,$
    /DATA, /AUTO_TEXT_COLOR)
  c_index = 1
  FOR T= 270,340,20 DO BEGIN
    ;计算黑体辐射出射度
    radiance = CALC_OMMITRADIANCE(wavelengths,T)
    ;  ;随机产生一个颜色
    ;  colorNames = TAG_NAMES(!color)
    ;  index = ROUND(RANDOMU(seed,1)*N_ELEMENTS(colorNames)+0)
    ;  color = colorNames[index]
    plots = PLOT(wavelengths,radiance,Name = STRING(T)+'K',colors[c_index],$
      AXIS_STYLE = 1,xtitle ='wavelength(um)',ytitle = '辐射出射度/(m^2*um)',/OVERPLOT)
    lege.ADD,plots
    c_index = c_index+1
  ENDFOR
END
 
FUNCTION CALC_OMMITRADIANCE,wavelengths,T
  ;
  ;wavelengths=FINDGEN(1000,start = 1,increment = 0.1);1_100 um
  spectrum= FINDGEN(1000);保存强度
  colors = !color
  c = 3*10.0^14; m/s
  h = 6.6256*10.0^(-34);Plank statics num
  k = 1.38*10.0^(-23);S_P statics num
  FOR i = 0,N_ELEMENTS(wavelengths)-1 DO BEGIN
    ;
    first_factor = 2*!pi*c*c*h/(wavelengths[i]^5.0)
    sencond_factor = 1.0/(EXP(c*h/(k*wavelengths[i]*T))-1)
    spectrum[i] = first_factor * sencond_factor*10^12.0;这里乘上10^12次方,是为了将um2转换为转化为m2的单位
  ENDFOR
  RETURN,spectrum
END

效果图:

IDL绘制黑体辐射曲线

上一篇:java 静态代码块 构造块 构造方法


下一篇:性能标准:Apdex介绍