28 #ifndef __MLPACK_METHODS_NMF_MULT_DIV_UPDATE_RULES_HPP
29 #define __MLPACK_METHODS_NMF_MULT_DIV_UPDATE_RULES_HPP
57 template<
typename MatType>
58 inline static void Update(
const MatType& V,
67 for (
size_t i = 0; i < W.n_rows; ++i)
69 for (
size_t j = 0; j < W.n_cols; ++j)
75 t2.set_size(H.n_cols);
76 for (
size_t k = 0; k < t2.n_elem; ++k)
78 t2(k) = H(j, k) * V(i, k) / t1(i, k);
81 W(i, j) = W(i, j) * sum(t2) / sum(H.row(j));
108 template<
typename MatType>
109 inline static void Update(
const MatType& V,
118 for (
size_t i = 0; i < H.n_rows; i++)
120 for (
size_t j = 0; j < H.n_cols; j++)
126 t2.set_size(W.n_rows);
127 for (
size_t k = 0; k < t2.n_elem; ++k)
129 t2(k) = W(k, i) * V(k, j) / t1(k, j);
132 H(i,j) = H(i,j) * sum(t2) / sum(W.col(i));