아스키 파일 읽을 시 에러

게시판 IDL Q&A 아스키 파일 읽을 시 에러

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

      안녕하세요. 코딩 중 잘 안되는 부분이 있어서 도움 청합니다.

      file1=’flux_S1.txt’
      line=file_lines(file1)
      data=dblarr(35,line)

      openr,1,file1
      readf,1,data
      close,1

      yy=fix(Reform(data[0,*]))
      mm=fix(Reform(data[1,*]))
      dd=fix(Reform(data[2,*]))
      hh=fix(Reform(data[3,*]))
      tt=fix(Reform(data[4,*]))
      ux19=Reform(data[5,*])
      uy19=Reform(data[6,*])
      uz19=Reform(data[7,*])
      ts19=Reform(data[8,*])
      h2o19=Reform(data[9,*])
      co219=Reform(data[10,*])
      ustar19=Reform(data[11,*])
      hc19=Reform(data[12,*])
      latent19=Reform(data[13,*])
      fc19=Reform(data[14,*])
      ux14=Reform(data[15,*])
      uy14=Reform(data[16,*])
      uz14=Reform(data[17,*])
      ts14=Reform(data[18,*])
      h2o14=Reform(data[19,*])
      co214=Reform(data[20,*])
      ustar14=Reform(data[21,*])
      hc14=Reform(data[22,*])
      latent14=Reform(data[23,*])
      fc14=Reform(data[24,*])
      ux7=Reform(data[25,*])
      uy7=Reform(data[26,*])
      uz7=Reform(data[27,*])
      ts7=Reform(data[28,*])
      h2o7=Reform(data[29,*])
      co27=Reform(data[30,*])
      ustar7=Reform(data[31,*])
      hc7=Reform(data[32,*])
      latent7=Reform(data[33,*])
      fc7=Reform(data[34,*])

      다음과 같은 텍스트 파일 읽은 후
      For y=2013L,2014 Do begin
      For m=1L,12 Do begin
      For j=1L,31 Do begin
      idx=where(yy EQ y and mm EQ m and dd EQ j, count)
      if count NE 0 Then Begin
      yy1=yy[idx]
      mm1=mm[idx]
      dd1=dd[idx]
      ux191=ux19[idx]
      uy191=uy19[idx]
      uz191=uz19[idx]
      ts191=ts19[idx]
      h2o191=h2o19[idx]
      co2191=co219[idx]
      ustar191=ustar19[idx]
      hc191=hc19[idx]
      latent191=latent19[idx]
      fc191=fc19[idx]
      for구문으로 제가 원하는 조건에 해당하는 값을 찾으려고 하는데…원본 파일에는 분명히 있는 숫자인데, For와 If구문을 돌리면서 원하는 값 선택시 NAN값으로 출력되는게 있는데…어떻게 수정해야 할까요?
      즉, 원본 파일에는 값이 존재하는데 ux191값으로 뽑으면 NAN값으로 나오는게 있습니다.

      도움주시면 감사하겠습니다.

    • #2019 Reply
      Jonghyuk
      회원

      이런 문제는 실제 상황을 보기 전에는 정답이 없습니다. 그리고 앞으로도 파일을 만나실 때마다 다른 상황이 될 것이구요.
      어디서부터 잘못 된 것인지 찾아 올라가는 디버깅을 해야 하는데요, 여기서는 NaN이 등장한다는 것에 눈길이 갑니다. 즉, Float형 변수로 받을 수 없는 내용이 파일 어딘가에 잠복해 있는거죠. 예를들면, — 같은 표시라든지, comment 같은 것입니다.
      자료가 모두 숫자로 이루어져 있다면 문제 없겠지만 중간에 이런 문자들(숫자화될 수 없는)이 끼어 있다면 NaN으로 읽어들일 가능성이 높습니다.

      그리고 이런 문제는 readcol로 해결하시는 게 가장 빠르지 않을까 생각됩니다.
      아래 링크를 보세요.
      http://www.idl-envi.co.kr/callcenter/tips/view.php?num=18&page=5

1 답변 글타래를 보이고 있습니다
'아스키 파일 읽을 시 에러'에 답변달기
글쓴이 정보: