- This topic has 1개 답변, 2명 참여, and was last updated 5 years, 3 months 전에 by mwkim.
-
글쓴이글
-
-
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=0yy1 = yy_o
FOR i=0l,N_ELEMENTS(xx)-1 DO BEGIN
IF yy_o[i] GT yy_o[i-1] THEN yy1[i] = fillvnan
ENDFORyy = 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에 의해 5 years, 3 months 전에 수정됐습니다.
-
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]으로 설정 추가하셔야 합니다.)
다만 문제가 있다는 부분이 정확히 어떤 부분일지는 내용만으로 판단이 안되서
위 부분만으로 해결이 안 될수도 있습니다.(잘못이해해서 원하지 않는 부분도 제거될 수 있고요.)
특히 자료 처리를 반복할수록 그래프가 이상하다는 부분이 어떤 부분인지는 잘 모르겠네요.
조언을 드리자면 자료 처리에 문제가 있으면 문제가 있는 부분을 해결하고 점차 적용하는 방식으로 하면 해결이 조금은 더 쉽지 않을까합니다.
-
-
글쓴이글