📄 nmf.m
字号:
% 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -