nmf.m
来自「Code to run the Non-negative Matrix Fact」· M 代码 · 共 35 行
M
35 行
% Non-negative matrix factorization...function [W, H, obj, num_iter] = nmf(V, W_in, H_in, max_iter, lambda) fprintf('Starting NMF algorithm...\n'); W = W_in; H = H_in; n = size(W,1); r = size(W,2); m = size(H,2); obj_old = compute_objective(V,W*H); obj = obj_old; for k=1:max_iter obj_old = obj; if mod(k,10) == 0 fprintf('%d/%d\n', k, max_iter); fprintf('obj: %f\n', obj_old); end % Update rules... W = W.*((V./(W*H))*H'); W = W./repmat(sum(W,1),n,1); H = H.*(W'*(V./(W*H))); obj = compute_objective(V,W*H); if obj-obj_old <= lambda num_iter = k; return end end num_iter = max_iter; function obj = compute_objective(V, WH) obj = sum(sum(V.*log(WH) - (WH)));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?