22 #ifndef __MLPACK_METHODS_LMF_UPDATE_RULES_NMF_MULT_DIV_HPP
23 #define __MLPACK_METHODS_LMF_UPDATE_RULES_NMF_MULT_DIV_HPP
48 template<
typename MatType>
49 void Initialize(
const MatType& dataset,
const size_t rank)
68 template<
typename MatType>
69 inline static void WUpdate(
const MatType& V,
78 for (
size_t i = 0; i < W.n_rows; ++i)
80 for (
size_t j = 0; j < W.n_cols; ++j)
86 t2.set_size(H.n_cols);
87 for (
size_t k = 0; k < t2.n_elem; ++k)
89 t2(k) = H(j, k) * V(i, k) / t1(i, k);
92 W(i, j) = W(i, j) * sum(t2) / sum(H.row(j));
110 template<
typename MatType>
120 for (
size_t i = 0; i < H.n_rows; i++)
122 for (
size_t j = 0; j < H.n_cols; j++)
128 t2.set_size(W.n_rows);
129 for (
size_t k = 0; k < t2.n_elem; ++k)
131 t2(k) = W(k, i) * V(k, j) / t1(k, j);
134 H(i,j) = H(i,j) * sum(t2) / sum(W.col(i));