function 연산과 다중 플랏

게시판 IDL Q&A function 연산과 다중 플랏

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5668 Reply
      kimms
      회원

      FUNCTION lore, x
      ;10KM (T = 210K, P = 110hPa)

      b = 1610.16
      S = 5.66E-24
      a = 0.0194
      ad = 6*(10^(-23))

      K = (S/3.141592)*(a/((x)^2+a^2))
      Kd = (S/(ad*(3.141592)^0.5))*exp(-(x/ad)^2)

      return, K
      return, Kd
      end

      PRO lore
      b = 1610.16
      x = ((findgen(1000)*0.001+1610.159)-b)
      K = lore(x)
      Kd = lore(x)
      help, K
      help, Kd
      print, x[0]
      device, decomposed = 0
      cgwindow
      cgdisplay, 1000, 500
      cgplot, x, K, thick =2, title = ‘Line Broadening of NO2’, $
      xtitle = ‘(V-V0)’, YTITLE = ‘Absorption coefficient’, $
      color = ‘red’, xthick = 3, ythick = 3, charthick = 2, xrange = [0, 0.1], $
      /addcmd
      cgplot, x, Kd, thick =2, title = ‘Line Broadening of NO2’, $
      xtitle = ‘(V-V0)’, YTITLE = ‘Absorption coefficient’, $
      color = ‘blue’, xthick = 3, ythick = 3, charthick = 2, xrange = [0, 0.1], $
      /addcmd, /overplot

      이거처럼, k와 kd에 대해서 겹치는 plot을 하고싶은데, k에 대한값만 나오네요 무엇이 문제일까요….

    • #5669 Reply
      Sangwoo
      회원

      함수형 부프로그램에서 RETURN은 하나만 유효합니다. 위와 같이 하시면 RETURN, k 만 제 역할을 할 뿐 뒤에 있는 RETURN, kd 는 아무 역할을 못합니다. 그리고 RETURN 명령은 한번만 유효하며, RETURN으로 되돌려줄 수 있는 항목의 갯수도 하나로 고정됩니다. 만약 함수형 부프로그램이 두 개의 항목들을 한꺼번에 되돌려주도록 하고자 할 경우에는 두 항목들을 구조체(Structure)의 형태로 묶고, RETURN은 이 구조체 하나를 되돌려주도록 하는 것이 좋습니다.

      result = {k:k, kd:kd}
      RETURN, result

      즉 함수 부프로그램에서는 이와 같이 정의해둡니다. 그리고 주프로그램에서는 다음과 같이 활용하면 됩니다.

      result = lore(x)
      k = result.k
      kd = result.kd

      이와 관련하여 아래 링크의 내용을 참조해보셔도 좋을 것입니다.

      http://blog.daum.net/swrush/273

1 답변 글타래를 보이고 있습니다
'function 연산과 다중 플랏'에 답변달기
글쓴이 정보: