외장함수에서 나오는 변수를 TXT파일로 저장하고 싶습니다.

게시판 IDL Q&A 외장함수에서 나오는 변수를 TXT파일로 저장하고 싶습니다.

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

  • 글쓴이
  • #5433

    woonghyun
    회원

    안녕하세요, IDL을 이제 막 배우고 있는 학생입니다. mpfitfun을 이용하여 가우시안 피팅을 하고 있습니다. mpfitfun을 이용하면 콘솔창에 나오는
    Iter 7 CHI-SQUARE = 97.443095 DOF = 28
    P(0) = 0.000000
    P(1) = 0.637329
    P(2) = 0.379444
    P(3) = 26.8072

    이 항목에서 각각의 p 값을 txt 파일로 저장하고 싶습니다. 문제는 for 반복문이라서 케이스가 16912개가 되기 때문에 각각의 케이스를 하나의 txt 파일로 저장한 후, 일정 p에 해당하는 케이스의 index를 따로 구분하려고 하는데요. 외장함수라서 제가 따로 변수지정한 항목이 아니어서 어떻게 변수를 저장해야하는지 궁금합니다.

    그리고 질문이 하나 더 있습니다. 적경, 적위 값을 가지고 있는 천체를 대상으로 density map을 그리고 싶은데요.
    IDL> bar = scatterplot(ra, dec)

    와 같이 그리면 산포도는 나오지만, 밀집되어 있는 곳의 밀도를 나타내는 값을 특정할 수 없어서 이를 어떻게 해야하는지 궁금합니다.

  • #5434

    Sangwoo
    회원

    우선 텍스트 파일로 저장하는 방법에 관해서는 아래 링크의 내용을 참조하시기 바랍니다.

    http://blog.daum.net/swrush/396

    그리고 케이스별로 총 16912개의 텍스트 파일들을 생성하고자 하신다는 얘기가 맞는지요? 그런데 “일정 p에 해당하는 케이스의 index를 따로 구분”한다는 것이 어떤 의미인가요? 파일명을 얘기하는 것인지 아니면 파일 내에 수록되는 값에 대한 것인지, 의미를 명확히 파악할 수가 없어서 답을 드리기가 굉장히 어렵습니다. 16912개의 파일을 저장한 뒤에 하고자 하시는 작업에 관해서 좀 더 구체적으로 알려주셨으면 합니다.

    그리고 두번째 질문하신 내용은, 불규칙 분포 데이터를 규칙 격자 데이터로 변환하여 원래의 데이터 포인트가 아닌 다른 부분의 값들도 일종의 내삽에 의하여 추론할 수 있으면 좋겠다는 의미인가요? 만약 그렇다면 위의 링크로 알려드린 제 IDL 블로그에서 “불규칙 분포 데이터를 규칙 격자화된 데이터로 만들기”라는 제목으로 3회분의 게시물들이 있는데 이 내용을 참조해보시길 권합니다. 이 문제는 Q&A에서 간단한 답변으로 소화하기엔 너무 방대한 내용입니다.

    http://blog.daum.net/swrush/443

    두번째 질문에 관한 제 해석이 만약 틀렸다면 문의를 다시 해주시기 바랍니다.

  • #5435

    woonghyun
    회원

    답변 정말 감사합니다. 먼저 첫번째로 드렸던 질문은 모든 경우에 대한(16912) 콘솔창에 출력되는 p 값을 하나의 텍스트 파일에 저장한 뒤, 텍스트 파일에 기록되어 있는 값에서 특정 조건을 만족하는 값을 찾는 것에 대하여 질문을 드린것입니다. 여기서 특정 조건은 p값 중 표준편차 시그마에 해당하는 값의 범위를 0.1에서 0.2 사이로 두는 작업을 하려고 한 것이었습니다.

    또한 두번째는 현재 RA와 DEC에 따른 천체의 분포를 scatterplot으로 나타내었습니다. 문제는 ra,dec에 따른 천체의 위치만 알고 있지 단위면적당 밀도값이 주어지지 않았기 때문에 단위면적을 적경,적위를 기준으로 생성하고 (가로축 100, 세로축 100개로 총 10,000개의 격자를 생성하려고 하고 있습니다.) 각각의 격자의 RA,DEC 범위 안에 포함되는 데이터수를 where문으로 찾아(RA gt 74 and RA lt 75와 같이) 밀도, ra, dec의 contour map를 만드려고 하고 있습니다. 그런데 격자를 만드는게 쉽지 않아서 어떻게 하면 만들 수 있을지 질문을 드렸었습니다. 학생이어서 부족한 점이 너무 많음에도 불구하고 상세하게 답변해주셔서 정말 감사드립니다.

  • #5436

    woonghyun
    회원

    우선 두번째에 대해 개인적으로 작성하여 봤는데, 정확하게 코딩이 된건지는 잘 모르겠습니다.
    다음과 같이 하면 될까요?

    STT_RA = range_data.left_RA[0] ; 적경 시작점. 66.00000
    STT_DEC = range_data.left_DEC[0] ; 적위 시작점. -55.410000
    for i=0,101 do begin
    xbin = 0.1d
    ybin = 0.04d
    w2=where(data.ra_des gt STT_RA and $
    data.ra_Des lt STT_RA+xbin*(i+1))
    data_RA = data[w2]
    for j=0,101 do begin
    w3=where(data_RA.DEC_des gt STT_DEC and $
    data_RA.DEC_Des lt STT_DEC+ybin*(j+1))
    data_RADEC = data_RA[w3]
    density = n_elements(data_RADEC.sz)
    print, density
    endfor
    endfor

    • 이 답변은  woonghyun에 의해 1 월, 1 주 전에 수정됐습니다.
  • #5438

    woonghyun
    회원

    해결했습니다 감사합니다 !!

답변은 로그인 후 가능합니다.