資源簡介
該資源是常用非負矩陣分解算法代碼,其中包括帶稀疏的非負矩陣分解,稀疏的非負矩陣分解,等常用算法。

代碼片段和文件信息
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
- 上一篇:matlab 圖像下采樣源碼
- 下一篇:OOK調制方法matlab代碼ook.m
評論
共有 條評論