필자는 3 차원 배열을 가지고 있는데, 나는 이동하지 않고 배열로 곱하고 (요소 현명한) 모든 제품을 더한다. 쉬프트 (i, j, k)를 정의하는 3 개의 정수들의 주어진 세트에 대해,이 트리플에 대응하는 합은 상기 위치 (i, j, k)에서 다른 3 차원 어레이에 저장 될 것이다.IDL : 루프를 사용하지 않고 가능한 모든 shift 값을 어떻게 루프합니까?
가능한 모든 i, j, k 값에 대해이 작업을 시도하고 있습니다. for/while 루프를 명시 적으로 사용하지 않고이 작업을 수행 할 수 있습니까? 나는 계산 시간을 최소화하지만, IDL 나던 내가 제공하고 현재의 지침을 이해하는데 매우 관심이 :
FUNCTION ccs, vecx, vecy
TIC
l = 512
km = l/2
corvec = fltarr(km,km,km)
N = float(l)^3
corvec[*,*,*] = (total(vecx*shift(vecx,*,*,*))/N)+ (total(vecy*shift(vecy,*,*,*))/N)
return, corvec
TOC
end
IDL에만 가능 이동 인수로 스칼라 또는 1 개 요소의 배열을 받아 나타납니다.
그게 내가하고 싶지 않았지만 불행히도해야만합니다. 저의 연구 고문은 IDL에서 새로운 방법을 배우는 데 도움이되도록 IDL에서 가장 빠른 방법을 찾아야한다고 말했습니다. 나는 C 나 포트란에서 무차별 대다수를 쉽게 꺼낼 수 있었지만하지 말라고했다. –