Strtrim 기능을 사용하는데에 있어서

게시판 IDL Q&A Strtrim 기능을 사용하는데에 있어서

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

      이 기능을 사용하는데에 있어서 변수명을 지정할 때 가 예제로 나와있더라구요
      IDL Basics에는
      근데 저는 for문을 이용하여
      restore를 할 때 사용하고자 하거든요?
      예를들면
      for i = 1,5 do begin
      ; 1부터 5까지 불러오구요

      restore, c:/summer_i.sav
      ; 리스토어를 하는데 파일 이름이 summer_1, summer_2, summer_3이런식으로 되어있어요

      c+strtrim(string(i),2)+_tr = transpose(c+strtrim(string(i),2),[1,0])
      ; 그리고 그 안에 있는 c1, c2, c3를 배열을 변환하여 c1_tr, c2_tr,..이렇게 바꾸고나서
      endfor

      를 하려고 하는데 에러가 발생합니다..

      문자열을 만들때 말고 다른 용도로 strtrim을 사용할 순 없는건지 궁금합니다 ㅠㅠ

    • #927 Reply
      Jonghyuk
      회원

      이런 방법으로 문제를 해결하는 것은 모범 답안은 아닙니다. c1_tr, c2_tr 같은 변수를 만드는 것 자체가 목적이 아니라면, 뒤쪽에서 계속 이 변수들이 등장할 텐데, 배열을 쓰는 것이 반복작업에는 “짱”입니다. 거의 필수적이라고 생각합니다.
      어쨌든 IDL에서 이런 상황은 다음과 같이 해결합니다.

      for i=1,5 do begin
      restore, ‘C:/summer_’+strtrim(string(i),2)+’.sav’
      print, ‘C:/summer_’+strtrim(string(i),2)+’.sav’

      cmd=’c’+strtrim(string(i), 2)+’_tr = transpose(c’+strtrim(string(i),2)+’,[1,0])’
      print, cmd
      ret=execute(cmd)
      endfor

      restore 문에서 파일 이름이 문자열이므로 따옴표 사용하셔야 하고, i가 알아서 문자열로 변환되지 않습니다. 아래쪽에서 사용하신 것처럼 string 함수로 변환 하셔야 합니다. 이것은 파일 이름과 관련한 문제이므로, 문자열 처리로 하는 것이 맞습니다.

      IDL 문장을 문자열로 만들어서 이를 실제 실행하는 것은 execute 함수가 하는 일인데, 위와 같이 사용합니다. 필요할 때가 있긴 하지만, execute를 사용하는 것은 처리 속도도 느리고, 일 복잡해 집니다. 배열을 이용해 작업 방향을 전환하시기를 권장합니다.

1 답변 글타래를 보이고 있습니다
'Strtrim 기능을 사용하는데에 있어서'에 답변달기
글쓴이 정보: