cvs로 배열 저장

게시판 IDL Q&A cvs로 배열 저장

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #680 Reply
      ckstn9610
      회원

      안녕하세요? 밤새워 작업을 하고 있는 고등학생 유저의 첫 질문입니다.

      목표로 하는 것은 여러 개의 2차원 배열을([RGB, number]_실질적으로는 1차원 3개) 엑셀을 이용하여 추세선을 그리고자 하는 것 입니다.
      이를 위하여 배열을 한 줄씩 프로그래밍을 통해 csv로 저장한 후에 합치고자 다음과 같이 하였습니다.

      pro rnlcksgdk3, array, filename

      FOR j = 0, 2 DO BEGIN

      openw, 1, filename+string(j)+’.csv’
      printf, 1, reform(array[j,*])
      close, 1

      ENDFOR
      END

      이렇게 하니 엑셀에서 다음과 같이 나타나더군요.

      9 9 9 10 10 10 9 9 9 9 9 9 9 9 9 8 9 9 9 9
      9 9 9 9 8 9 9 9 9 9 9 9 8 9 9 9 8 8 8 10

      기존 사이트에서 ‘csv’를 검색하자 다음과 같은 댓글을 발견하였습니다.
      >
      이상우 (2008-05-13 12:43:06)
      프린트되는 숫자값이 앞뒤 여백이 없어야하는 상황인 것 같군요. 그러면 매 숫자값마다 string함수를 사용한 다음 바로 strtrim함수를 사용하면 됩니다. 각 줄마다 3개씩의 숫자값이 들어가는데, 예를 들어 이 세 값이 a, b, c라면 다음과 같이 되겠지요.

      printf, lun, strtrim(string(a), 2), ‘,’, strtrim(string(b), 2), ‘,’, strtrim(string(c), 2)
      >

      저는 이 방법을 배열의 크기를 알고 있는 경우에 하나하나 지정해주는 방법으로 이해하였습니다.
      for문을 덧붙여서 사용하려고 해도 printf 때문에 어떻게 건드려야 할지 모르겠습니다.

      배열을 자동적으로 csv로 저장하려면 어떻게 해야할까요?

    • #685 Reply
      Jonghyuk
      회원

      strjoin 을 사용면 되지 않을까요?
      IDL> print, indgen(5)
      0 1 2 3 4
      IDL> print, strjoin(indgen(5), ‘,’)
      0, 1, 2, 3, 4

      아니면 도움말에서 write_csv를 검토해 보십시오. 이게 더 편할 수도 있습니다.

    • #697 Reply
      ckstn9610
      회원

      질문자 입니다.
      고민하다가 다음과 같이 실행하니까 되더군요;;
      제가 printf의 성질을 덮어쓰는 것으로 오해하고 있었습니다.

      FOR i = 0, (size(array))[1]-1 DO BEGIN
      printf, 1, (array[i])
      endfor

2 답변 글타래를 보이고 있습니다
'cvs로 배열 저장'에 답변달기
글쓴이 정보: