У меня есть большая 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, но не сделал этого.
У кого-нибудь есть векторизованное решение?