mwkim

게시판 답변이 생성됐습니다

15 글 보임 - 16 에서 30 까지 (총 49 중에서)
  • 글쓴이
  • 답변: 이름이 다른 변수를 합치는 법 #5186
    mwkim
    회원

    올려주신 내용에 대해 정확한 답변이 될 지는 모르겠는데,

    일단 파악한 바로는 병렬 처리를 통해 다수의 변수가 생성된 것을 하나의 변수로 합치는 방법에 대해 문의하신 것 같습니다.

    해당 부분은 올려주신 것과 같이

    xx=[xx_0, xx_1, …, xx_N]

    와 같이 처리가 가능할텐데 문제는 이 xx 변수 개수에 변동이 생기면 매번 명령어를 다시 작성해야 한다는 것 같습니다.

    일단 원래 변수 명과 개수만 알면 위와 같은 명령어는 만드실 수 있을 것 같은데, 만들어진 명령어는

    EXECUTE 명령어를 통해서 실행이 가능합니다.

    void = EXECTUE(‘xx=[xx_0, xx_1, …, xx_N]’)

    그 외 EXECUTE 명령어에 대한 부분은 IDL 도움말을 참조하시면 될 것 같습니다.

    정리하면 다음과 같을 것 같습니다.

    baseName = ‘xx’ ; 원래 변수명
    cmd = baseName + “=[”
    FOR i = 0, num – 1 DO BEGIN ; num = 병렬화 개수
    varName = baseName + STRING(i) ; i를 문자열로 변환 시 split_for에서 만들어주는 규칙에 따라 FORMAT을 정의해 주어야 합니다.
    cmd += varName
    IF i NE num – 1 THEN cmd += ‘,’
    ENDFOR
    cmd += ‘]’
    void = EXECUTE(cmd)

    답변: CONTOUR 내삽 관련 문의 #5168
    mwkim
    회원

    안녕하세요,

    먼저 질문 드릴 부분이 있는데 원하시는 것이 특정 구간만 색이 나오고

    다른 값에는 표기가 안되길 원하시는 것인가요?
    (예제를 예로 하면 1-8사이는 나오지 않는 것)

    CONTOUR 함수의 경우 내삽하여 표출하기 때문에 연속 구간이 발생할 수 밖에 없을 것 같습니다.

    만약 특정 구간만 표출하시는 거면 해당 구간별로 별도로 CONTOUR 함수로 표출하고 중첩해야 할 것 같습니다.

    아무튼 이것과 별개로 CONTOUR 함수의 등치선의 값은 예제에 있는 C_VALUE를 정의하시면 됩니다.

    data = HANNING(100,100)
    c1 = CONTOUR(data,C_VALUE=INDGEN(10),/FILL)
    c2 = CONTOUR(data,C_VALUE=[0,1,8,9],/FILL)

    위 예를 해보시면 C_VALUE에 따라 표출이 다른것을 확인하실 수 있습니다.
    (FILL 옵션을 안 켜도 마찬가지이나 잘 보이지 않아서 FILL 옵션 사용)

    답변: matlab 코드 idl에서 사용? #5123
    mwkim
    회원

    안녕하세요,

    제가 알기로는 IDL 브릿지중에 매트랩은 없는 것으로 알고있습니다.
    (8.6버전에는 JAVA, C(C++,C#), Visual Basic, PYTHON이 있습니다.)

    IDL과 MATLAB을 오가면서 프로그램을 구동하시려면 하나를 메인으로 하고

    메인 프로그램에서 다른 프로그램을 외부 명령어 호출 방식으로 사용하시는 방법이 있습니다.
    (데이터 등은 파일이나 파이프 등으로 전달해야 겠지요.)

    참고로 IDL에서 외부 명령어 호출은 “SPAWN” 함수를 통해 할 수 있습니다.
    (자세한 내용은 도움말을 참조하세요.)

    답변: 지도위에 그림그리는법 #5114
    mwkim
    회원

    안녕하세요, 질문올리신 내용은 다음과 같이 수정하면 될 것 같습니다.

    c= image(p,x,y,rgb_table=33,grid_unit=’deg’)
    m=map(‘polar’,limit=[50,-180,90,180],/overplot)

    위 내용과 관련해서 몇 가지 설명 드리면 다음과 같습니다.

    =========================================
    IMAGE 함수의 GRID_UNIT 사용: 이미지 함수를 사용할 때, x,y 또는 lon,lat 자료를 사용할 수 있는데,
    해당 격자 자료를 사용할 때는 GRID_UNIT을 사용한 자료에 맞게 정의해 주어야 합니다.
    해당 키워드에 대한 자세한 내용은 도움말을 참고하세요.
    =========================================
    MAP 함수의 OVERPLOT 사용: CURRENT를 사용하셨는데, 이 경우는 OVERPLOT을 사용하는 것이 맞습니다.
    CURRENT는 단순히 두 개의 표출을 현재 창에 하는 것이라면
    OVERPLOT은 두 개의 표출을 하나의 좌표에서 표출하는 것입니다.
    역시 자세한 내용은 도움말을 참고하세요.
    =========================================

    또한 지도 표출과 관련해서는 아래 링크를 참고하시면 도움이 될 것 같습니다.

    IDL에서 지도의 표출 및 활용법에 관하여 [6]

    답변: txt 파일을 새로 쓸 때의 문제 #5077
    mwkim
    회원

    안녕하세요, 문제를 분명히 하기 위해 몇 가지 질문 드립니다.

    day1이 31이 나온다고 하셨는데 31이 되는게 자료를 저장할 때 그렇다는 건가요?

    아니면 프로그램이 최종적으로 반복되고 나서 31이 되는 건가요?
    (프로그램 구조 상 31일이 있는 달의 자료를 읽으면 최종적으로는 31이 되는게 맞다고 봅니다.)

    만약 day가 31이 아닌 값인데 day1이 31일 때 저장되는 문제이면

    if day1 eq day then begin
    printf, wlun, year1,day1,ihr1,mins1,Bx,By,Bz,flwspd1,flwprs1,AE1,Sym1,format='(i4.4,3i4,3f8.2,f10.2,f7.2,2i5)’
    endif

    위 IF 문 안에서 day1과 day 값을 표출시켜서 확인해보시기 바랍니다.
    (제대로 값이 들어가 있는지)

    두 번 째로 자료가 마지막에는 제대로 저장되지 않는 부분도

    표출해봐서 변수에 실제 자료가 없는 것인지 아니면 저장하는 과정에서의 문제인지를 명확히 해야할 것 같습니다.

    그리고 별개의 문제이지만 OPENR, OPENW로 파일을 열었으면 CLOSE나 FREE_LUN으로 반드시 닫아주셔야 합니다.

    (더 추가하자면 wlun도 /GET_LUN 옵션으로 자동으로 지정되도록 하는게 좋을 것 같습니다.)

    mwkim
    회원

    안녕하세요, 우선 제가 알기로는 웹 상에서 특수 문자(-제외)는 사용안되는 걸로 알고 있습니다.

    다만 받으실 자료를 보니 뒤에 붙는 문자가 버전을 나타내며 한정적인것 같습니다.

    따라서 반복문을 돌릴 때 한정된 내용을 문자열로 만들어 두고 받도록 하는 것도 방법이 되지 않을까 합니다.

    다만 IDL과 별도 이지만 리눅스의 wget 명령어를 통해서 웹 주소의 자료를 받을 수 있는 것으로 알고 있습니다.

    아래 관련 내용의 링크를 달아드립니다.

    wget 관련 링크

    답변: SSH 시 tvlct.pro 사용 방법 #5062
    mwkim
    회원

    안녕하세요, DG 체계에서도 메모리상에서만 작업하고 저장할 수 있습니다.

    Z-BUFFER를 이용하면 되는데요,

    SET_PLOT 프로시저를 사용하시면 됩니다.

    자세한 사용법은 도움말을 참조하시면 되고,

    아래 도움이 될 링크도 같이 달아드립니다.

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

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

    • 이 답변은 mwkim에 의해 6 years, 8 months 전에 수정됐습니다.
    mwkim
    회원

    안녕하세요, 파일 이름을 바꾸는 기능은

    IDL의 FILE_MOVE 기능을 사용하시면 됩니다.

    간단하게 파일 이름을 바꾸는 것은 다음과 같이 사용가능합니다.

    ————————–

    FILE_MOVE, 원래파일이름(경로포함), 바꾸고자하는파일이름(경로포함)

    ————————–

    해당 함수의 자세한 사용법에 대해서는 도움말을 참조하시면 될 것 같습니다.

    답변: 리눅스 환경에서 IDL 한글 표출 #4990
    mwkim
    회원

    알려주신 내용에서 몇가지를 추측해보면 현재 그림은

    리눅스 환경에서 DG 체계를 사용하여 PS 파일로 저장하는 것 같습니다.

    위의 답변에 있는 두 번째 링크는 윈도우 환경에 대한 것인데, 우선 이와 유사한 문제일것으로 추측은 합니다.

    다만 리눅스 환경에서 IDL이 PS 저장 시 어떤 인코딩을 사용하는지

    그에 따라 어떻게 코드를 저장해야 하는지는 잘 모르겠습니다.

    추가로 위 답변에서 제가 리눅스 환경에서 한글 표출을 확인했을 때는

    NG 체계를 사용하여 PNG 파일로 저장했었습니다.

    답변을 작성하신 분께서 특별한 이유가 없다면 PS로 저장한 후 PNG로 변환하지 말고

    바로 PNG 파일로 저장해보시면 어떨까 합니다(이왕이면 NG체계를 사용하여).

    참고로 NG체계에서는 PS파일을 저장할 때 /BITMAP 키워드를 통해 한글이 깨지지 않고 PS 파일로 저장이 가능합니다.
    (만 사실 해당 키워드를 사용하면 벡터 형식으로 저장되는 것은 아닙니다.)

    ※사실 제일 편한 방법은 한글을 사용하지 않는 것입니다.

    답변: 리눅스 환경에서 IDL 한글 표출 #4985
    mwkim
    회원

    안녕하세요,

    아마 아래 글을 참고하셨을텐데요

    포스트스크립트에서한글사용

    관련해서 추가글을 안내해드리면 아래 링크와 같습니다.

    idl8.2 버전에서 한글 사용

    다만 두번째 링크의 경우는 윈도우에서 상황이였기 때문에 동일한 문제일지는 모르겠습니다.

    일단 첫번째 링크와 동일한 방식으로 윈도우에서는 한글이 표출되는 것은 확인했습니다.
    (라이센스 문제로 저장까지는 확인하지 않음)

    또한 리눅스에서는 8.6버전을 통해서 동일하게 적용되는 것을 확인했습니다.

    다만 8.1버전을 리눅스 환경에서 테스트할 조건이 안되서 질문자 분의 환경에도 적용되지는 확인하지 못했습니다.

    질문하신 분의 여건이 되면 동일한 코드를 가지고 윈도우나 다른 환경(서버)에서도

    동일한 문제가 발생하는지 확인해 주시면 감사하겠습니다.

    그리고 글씨 깨짐 현상이 plot창에서 발생하는 것인지(x-window 사용이 가능한 상황에서)

    아니면 그림을 저장하고 해당 그림을 열어보니 깨진 것을 확인한 것인지도 알려주십시오.

    답변: libmath.so 파일 #4982
    mwkim
    회원

    안녕하세요,

    올려주신 내용만으로는 확인되지 않은 부분이 있어서 몇가지 추가 정보를 같이 올려주시면 도움이 될 것 같습니다.

    1. 어떤 상황에서 해당 오류가 발생했는지 알려주십시오.
    대략 어떤 함수를 사용했을 때 해당 오류가 발생했는지 알려주시면 됩니다.
    간단하게 해당 오류를 재현할 수 있는 예제 코드를 올려주시면 더 도움이 될 것도 같습니다.

    2. 사용하신 IDL 버전과 사용환경(OS등)을 알려주세요.
    기본적으로는 IDL 최신버전에 대해서 확인하는데
    경우에 따라서는 사용하신 버전과 환경에서만 발생하는 버그일 수도 있어서 해당 정보가 필요합니다.

    3. 에러 메세지 전체도 같이 올려주시면 도움이 됩니다.

    참고로 리눅스에서 IDL을 설치하면 해당 경로의 bin 폴더에 so 파일이 있습니다.
    (만 libmath.so 파일은 저도 찾지는 못했습니다(8.6환경).)

    mwkim
    회원

    안녕하세요.

    질문하신 부분은 크게 두 부분으로 나뉘어 생각할 수 있습니다.

    1. 역수 관계 자료 만들기
    2. 두 개의 자료를 하나의 그래프에서 각각의 y축을 사용하여 표출하기

    ————–

    1번은 크게 어렵지 않게 하실 것이라고 생각됩니다.
    (단순히 생각해도 역수 자료는 y_inverse = 1./y)

    2번이 주 문제일것으로 보이는데

    이에 관해서는 아래 링크에 있는 글을 참조하시면 될 것 같습니다.

    blog.daum.net/swrush/266

    • 이 답변은 mwkim에 의해 6 years, 11 months 전에 수정됐습니다.
    답변: readcol 오류 #3250
    mwkim
    회원

    오류가 발생했을 때, file_search로 찾은 file 변수를 확인해 보셨나요?

    어떤 오류 메세지가 나왔는지 함께 올려주셔야 할 것 같습니다.

    mwkim
    회원

    안녕하세요

    질문하신 내용은 자료를 반복적으로 불러왔는데 불러온 자료를 어떻게 하나의 변수에 담을지 질문하신건가요?

    array 자료에 대해 다음과 같이 쉽게 연결이 됩니다.

    x = INDGEN(3)
    y = [INDGEN(3),x]
    PRINT,y
    0 1 2 0 1 2

    위 질문에서 FOR 문 밖에서 하나로 저장할 변수를 정의(readcol에서 자료를 받는 변수명과는 다르게)하신 후

    위와 같은 방식으로 연결하시면 될 것 같습니다.

    file=file_search(경로/*.txt’)

    file_input=file[i]

    yr = [];빈 array정의

    for i=0, 250 do begin

    readcol, file_input ,year, mon, num, name, format='(i,i,i,a)’

    yr = [yr,year];불러온 자료 연결

    mwkim
    회원

    랜덤하게 발생하는 문제라니 원인 밝히는 과정이 쉽지 않아 보입니다.

    보실지 모르겠는데 추가적으로 두가지 정도 확인하면 좋을 것 같습니다.

    1. IDL 버전 확인(작업 환경도 같이)

    2. ASCII 형식이 아닌 다른 형식으로 자료 저장 후 자료 확인
    (기본적으로 IDL 에서 제공하는 저장 형식이 가장 무난할 것 같습니다.)

    1번은 버전에 따른 문제일 수도 있어서 질문드리는 것이고

    2번은 자료 자체에는 문제가 있는 것인지 아니면 저장할 때 문제가 있는 것인지 확인이 필요할 것 같습니다.

    추가로 위에 작성된 내용을 보면 IDL을 계속 터미널로 보면서 작업하시는 것 같은데
    중간에 수동처리할 부분이 없다면 백그라운드로 실행시키셔도 되지 않을까 합니다.
    (물론 중요 정보는 로그파일로 저장하도록 하고)

    SSH를 오래 열어두어서 결과에 영향이 미칠것이라고는 생각되지 않지만…
    랜덤 발생 에러니 가능성은 다 열어두는 것이 좋을 것 같습니다.

    테스트 결과 기다리고 있겠습니다.

15 글 보임 - 16 에서 30 까지 (총 49 중에서)