大きな m *n スパース行列 Y があります。各行の平均がゼロになるように、Y の各行を正規化したいと思います。
私は最初にこれを試しました。しかし、各行の平均もゼロエントリから差し引かれますが、これは私が望むものではありません。
Ynorm = bsxfun(@minus, Y, Ymean);
それから私はこれを試しました。
[m, n] = size(Y);
nonZeroNum = nnz(Y);
Ynorm = spalloc(m,n,nonZeroNum);
for i = 1:m
Ynorm(i, :) = spfun(@(x)(x - Ymean(i)), Y(i, :));
end
ただし、このベクトル化されていないソリューションは遅すぎます。
bsxfun と spfun を組み合わせることも考えましたが、実現しませんでした。
ベクトル化されたソリューションを持っている人はいますか?