別のベクトルで集約したい 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
2 次元では を使用しますaccumarray
が、それはより高い次元の入力を受け入れません。