다른 벡터로 집계 할 3 차원 (또는 그 이상) 배열이 있습니다. 특정 응용 프로그램은 공간 데이터를 매일 관측하고 월간 값을 얻기 위해 평균을 구하는 것입니다. 따라서 치수가 <Lat, Lon, Day>
인 배열이 있고 치수가 <Lat, Lon, Month>
인 배열을 만들고 싶습니다.고 차원 배열의 효율적인 집계
다음은 내가 원하는 것의 모의 예입니다. 현재, 내가 루프를 사용하여 올바른 출력을 얻을 수 있지만, 실제로 내 데이터는 매우 큰, 그래서 내가 두 번째 루프보다 더 효율적인 해결책을 기대했다 : 2 개 차원에서
% Make the mock data
A = [1 2 3; 4 5 6];
X = zeros(2, 3, 9);
for j = 1:9
X(:, :, j) = A;
A = A + 1;
end
% Aggregate the X values in groups of 3 -- This is the part I would like help on
T = [1 1 1 2 2 2 3 3 3];
X_agg = zeros(2, 3, 3);
for i = 1:3
X_agg(:,:,i) = mean(X(:,:,T==i),3);
end
, 내가 사용하는 것이 accumarray
이지만 더 높은 차원 입력을 허용하지 않습니다.
'for'가 훨씬 더 효율적으로되었습니다. 나는 병목으로 간주하지 않을 것입니다. 그렇게 말하면 아마 추가 코어를 사용하기 위해'parfor '로 바꿀 수 있습니다. – bdecaf