• 大小: 13KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Matlab
  • 标签: NMF  matlab  

资源简介

该资源是常用非负矩阵分解算法代码,其中包括带稀疏的非负矩阵分解,稀疏的非负矩阵分解,等常用算法。

资源截图

代码片段和文件信息

function LNMF( V rdim alpha betaw)
%

% Check that we have non-negative data
if min(V(:))<0 error(‘Negative values in data!‘); end

% Globally rescale data to avoid potential overflow/underflow
V = V/max(V(:));

% Dimensions
vdim = size(V1);
samples = size(V2);

% Create initial matrices
if nargin<5
   W = abs(randn(vdimrdim));
else
    W=w;
end;
H = abs(randn(rdimsamples));

% Make sure W has unit sum columns!
W = W./(ones(vdim1)*sum(W1));

% % Initialize displays
% if showflag
%    figure(1); clf; % this will show the energies and sparsenesses
%    figure(2); clf; % this will show the objective function
%    drawnow;
% end

% Calculate initial objective
objhistory = sum(sum((V.*log(V./(W*H))) - V + W*H)) + ...
 alpha*sum(sum(W‘*W)) - beta*sum(diag(H*H‘));

timestarted = clock;

% Start iteration
iter = 0;
while 1

    % Show progress
    fprintf(‘[%d]: %.5f \n‘iterobjhistory(end));    
    
%     % Save every once in a while
%     if rem(iter5)==0
%  elapsed = etime(clocktimestarted);
%  fprintf(‘Saving...‘);
%  save(fname‘W‘‘H‘‘alpha‘‘beta‘‘iter‘‘objhistory‘‘elapsed‘);
%  fprintf(‘Done!\n‘);
%     end

    % Show stats
    if rem(iter5)==0
figure(1);
cursW = (sqrt(vdim)-(sum(W)./sqrt(sum(W.^2))))/(sqrt(vdim)-1);
cursH = (sqrt(samples)-(sum(H‘)./sqrt(sum(H‘.^2))))/(sqrt(samples)-1);
subplot(311); bar(sqrt(sum(W.^2)).*sqrt(sum(H‘.^2)));
subplot(312); bar(cursW);
subplot(313); bar(cursH);
if iter>1
    figure(2);
    plot(objhistory(2:end));
end
drawnow;
    end
    
    % Update iteration count
    iter = iter+1;    
    
    % Save old values
    Wold = W;
    Hold = H;

    % Update rules (Matlab code by Stan Li) 
    VC = V./(W*H);
    H = sqrt(H.*(W‘*VC));
    W = W.*(VC*H‘)./(repmat(sum(W2)[1rdim])+repmat(sum(H‘1)[vdim1]));
    W = W./(ones(vdim1)*sum(W1));
    
    % Calculate objective
    newobj = sum(sum((V.*log(V./(W*H))) - V + W*H)) + ...
 alpha*sum(sum(W‘*W)) - beta*sum(diag(H*H‘));
    objhistory = [objhistory newobj];
         
    
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2126  2015-05-06 17:13  NMFpackage\LNMF.m

     文件       6879  2015-04-15 16:53  NMFpackage\main.m

     文件       1994  2015-04-15 16:45  NMFpackage\NMFdiv.m

     文件       1921  2015-04-15 16:46  NMFpackage\NMFmse.m

     文件       5216  2015-04-15 16:44  NMFpackage\NMFsc.m

     文件       4171  2015-04-15 16:55  NMFpackage\pgma_read.m

     文件       1572  2015-04-15 16:56  NMFpackage\projfunc.m

     文件       3313  2015-04-15 16:57  NMFpackage\projtest.m

     文件       2173  2015-05-06 16:33  NMFpackage\SNMF.m

     文件       1618  2015-04-15 17:00  NMFpackage\visual.m

     目录          0  2015-08-28 13:21  NMFpackage

----------- ---------  ---------- -----  ----

                30983                    11


评论

共有 条评论