데이터 QC (반복적인 roop)

게시판 IDL Q&A 데이터 QC (반복적인 roop)

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

  • 글쓴이
  • #5441 답변

    S.H.Ahn
    회원

    안녕하세요. 대학원 과정 학생입니다.

    자료 처리하던 중 궁금한 점이 생겼는데요.
    처리해야 할 내용이 x 값이 증가함에 따라 y 값이 감소되어야 하는데 오히려 증가되는 point 들을 제거해야합니다.

    그런데 한번 for 를 돌려 수행하니까 몇개의 점들이 제거 되긴 하였는데 아직 남아있는게 50%가 넘어 보입니다.
    Where, finite 함수를 사용하여 x,y 를 새 변수로 다시 설정하고 독립적인 for 를 몇 번 돌렸는데 결과 그래프가 이상합니다..

    코드 첨부하오니 답변 주시면 정말 감사하겠습니다! 🙂

    ;—————————————————–
    arran = SORT(var6)
    xx = var6[arran]
    yy_o = ALOG10(var13[arran])
    yy2=0

    yy1 = yy_o
    FOR i=0l,N_ELEMENTS(xx)-1 DO BEGIN
    IF yy_o[i] GT yy_o[i-1] THEN yy1[i] = fillvnan
    ENDFOR

    yy = yy1
    ;—————————————————–

    ** 문제의 코드
    ;—————————————————–
    ;yy1 = yy_o
    ;FOR i=0l,N_ELEMENTS(xx)-1 DO BEGIN
    ;IF yy_o[i] GT yy_o[i-1] THEN yy1[i] = fillvnan
    ;ENDFOR
    ;ok1 = WHERE(FINITE(yy1))
    ;yy2=yy1 & xx2=xx
    ;yy2=yy1[ok1]
    ;xx2=xx[ok1]
    ;
    ;yy2=yy1
    ;FOR i=0l,N_ELEMENTS(xx)-1 DO BEGIN
    ;IF yy1[i] GT yy1[i-1] THEN yy2[i] = fillvnan
    ;ENDFOR
    ;ok2 = WHERE(FINITE(yy2))
    ;yy3=yy2 & xx3=xx2
    ;yy3=yy2[ok2]
    ;xx3=xx2[ok2]
    ;—————————————————–

    • 이 게시글은  S.H.Ahn에 의해 7 월, 1 주 전에 수정됐습니다.
  • #5443 답변

    mwkim
    회원

    안녕하세요.

    우선 fillvnan 은 !VALUES.F_NAN 이라고 가정하고 코드를 봤습니다.

    아마도 해결이 안되는 부분은 yy_o에 해당하는 값이 연속적으로 증가하는 부분때문에 모두 제거가 안 된 것이 아닐까합니다.

    따라서 연속적인 값을 비교하기 위해서 비교값을 저장하면 되지 않을까 합니다.

    IF yy_o[i] GT threshold THEN BEGIN
    yy1[i] = fillvnan
    ENDIF ELSE BEGIN
    threshold = yy_o[i]
    ENDELSE

    위와 같이 하셔도 되고 비슷하게 작성하셔도 됩니다.(참고로 threshold는 FOR 돌기 전에 yy_o[0]으로 설정 추가하셔야 합니다.)

    다만 문제가 있다는 부분이 정확히 어떤 부분일지는 내용만으로 판단이 안되서

    위 부분만으로 해결이 안 될수도 있습니다.(잘못이해해서 원하지 않는 부분도 제거될 수 있고요.)

    특히 자료 처리를 반복할수록 그래프가 이상하다는 부분이 어떤 부분인지는 잘 모르겠네요.

    조언을 드리자면 자료 처리에 문제가 있으면 문제가 있는 부분을 해결하고 점차 적용하는 방식으로 하면 해결이 조금은 더 쉽지 않을까합니다.

'데이터 QC (반복적인 roop)'에 답변달기
글쓴이 정보: