function 연산과 다중 플랏

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

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 1 월, 1 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5668 답변

    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 답변

    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

'function 연산과 다중 플랏'에 답변달기
글쓴이 정보: