我有一组高维但非常稀疏的矩阵。我想对它们进行归一化,以便所有矩阵的列总和为 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
但是,您可以猜到这非常慢。一种选择是:
for i = 1:length(matrices)
matrices{i} = matrices{i} ./ repmat(normalizer,size(matrices{i},1),1);
end
但这会停止,因为没有足够的内存来创建一个巨大且几乎完整的矩阵(使用规范化器重复)
你能推荐一个更好的选择吗?