私は高次元の配列を持っていますが、非常にまばらな行列です。すべての行列の列の合計が 1 になるように正規化したいと考えています。
私が使用するサンプルコードは次のとおりです。
bg = matrices{1};
for i = 2:length(matrices) , bg = bg + matrices{i}; end
normalizer = sum(bg);
for i = 1:length(matrices)
for j = 1:size(matrices{i},1)
matrices{i}(j,:) = matrices{i}(j,:) ./ normalizer;
end
end
ただし、ご想像のとおり、これは非常に遅いです。1 つの選択肢は次のとおりです。
for i = 1:length(matrices)
matrices{i} = matrices{i} ./ repmat(normalizer,size(matrices{i},1),1);
end
しかし、巨大でほぼ完全な行列を作成するのに十分なメモリがないため、これは停止します (ノーマライザーで繰り返されます)。
より良い代替案を提案できますか?