행렬 더하기

게시판 IDL Q&A 행렬 더하기

3 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #2037 Reply
      sando
      회원

      LonArr ( 512,512, 200) 행렬에서요,

      summ[*,*,0]=[*,*,0] + [*,*,11] + … + [*,*, 55]
      summ[*,*,1]=[*,*,1] + [*,*,12] + … + [*,*, 56]
      summ[*,*,2]=[*,*,2] + [*,*,13] + … + [*,*, 57]

      이와 같이 더하려 합니다.

      그런데 방법을 못찾고 있습니다.
      Total 함수나 product 는 element 내의 계산이어서요.

      어떻게 하면 될지요?

      감사합니다.

    • #2039 Reply
      Sangwoo
      회원

      제가 제대로 이해한 것인지 모르겠으나 일단 element내의 계산, 즉 배열내 원소들간의 합을 계산하는 경우라면 다음과 같은 방식이면 되겠지요.

      summ[*, *, 0] = TOTAL(summ[*, *, 0:55])
      summ[*, *, 1] = TOTAL(summ[*, *, 1:56])
      summ[*, *, 2] = TOTAL(summ[*, *, 2:57])

      그런데 element내의 계산이 아니라면 구체적으로 어떤 계산이 필요한 것인지 구체적으로 설명해주실 수 있을까요? 원소값이 아닌 인덱스들간의 계산을 얘기하시는건지 제가 잘 이해가 안갑니다. 적어주신 내용 자체는 IDL상의 문법으로는 맞지는 않거든요.

    • #2040 Reply
      sando
      회원

      안녕하세요.

      제가 질문을 잘못드렸습니다..^^

      a=[[1,2],[3,4]]
      b=[[5,6],[7,8]]

      이렇게 있을때,
      a+b = [[4,6],[12,14]]

      이렇게 나왔으면 하고 있습니다~

      a+b+ … + h 정도까지 해야 하는데, 이는 반복으로 하면 될것 같아서요~

      그런데, total (a,b) 해보니 안되더라구요~
      하나씩 element 는 아니어서요.

      용도는, 2D 영상을 더하려 합니다. 그냥 더하면 되는데요, 이것을 각 상황 ( 몇개 slice, 갯수 등이 달라셔서요) 에 맞게 고쳐지도록 하려니 복잡해졌습니다~

      2D 영상 1,2 를 더하면 됩니다. 조금더 쉽게 할 방법이 없을지해서 문의드립니다~

    • #2041 Reply
      Sangwoo
      회원

      영상을 더한다는 말씀으로 봐선 아마 처음 질문에서 언급하신 512X512X200 형태의 배열이 원래 작업하시는 배열같습니다. 그래서 512X512 크기의 이미지 200장이 하나의 배열로 묶인 상태에서 각 화소별로 200 프레임에 걸친 총합들을 모은 512X512 크기의 총합 이미지 배열을 얻는 것이 목적인 것으로 생각이 됩니다. 제가 제대로 이해하고 있는 것이 맞는지요? IDL 도움말에서 TOTAL 함수의 문법을 보면 다음과 같이 나오는데요.

      Result = TOTAL( Array [, Dimension] [, /CUMULATIVE] [, /DOUBLE] [, /INTEGER] [, /NAN] [, /PRESERVE_TYPE] )

      여기서 Dimension이란 부분을 주목하시면 됩니다. 자세한 내용은 도움말에서 보시길 바라고, 현재 질문에 대한 해결책은 다음과 같습니다. 만약 배열 이름이 data라고 하면, 다음과 같이 하면 됩니다.

      result = TOTAL(data, 3)

      그러면 result라는 결과는 512X512의 형태를 갖는 배열이 됩니다. 물론 result 배열의 각 “화소”값은 원본 배열인 data에서 그 화소 위치에 대한 200 프레임의 값들을 모두 합친 결과입니다. 결국 위의 명령은 data라는 배열에서 세번째 차원, 즉 여기서는 프레임 번호에 해당되는 차원의 모든 값들만 합치되 512X512에 해당되는 차원은 그대로 두라는 의미입니다. 물론 그냥 TOTAL(data)하면 에누리없이 전부 다 퉁쳐서 합해버리게 되겠지요.

3 답변 글타래를 보이고 있습니다
'행렬 더하기'에 답변달기
글쓴이 정보: