Code
% D 输入数据 n(个)* m(维) r 降维后的维度
% D=W*H W 基向量矩阵 H 在基下的坐标向量
function [W,H]=NMF(D,r)
sizeD=size(D);
n=sizeD(1);
m=sizeD(2);
W=abs(rand(n,r));
H=abs(rand(r,m));
for iterate=1:100
WD=W'*D;
WWH=W'*W*H;
for a = 1:r
for u=1:m
H(a,u)=H(a,u)*WD(a,u)/WWH(a,u);
end
end
DH=D*H';
WHH=W*H*H';
for i = 1:n
for a=1:r
W(i,a)=W(i,a)*DH(i,a)/WHH(i,a);
end
end
end
posted on
2009-06-22 17:14
feathersky
阅读(
3060)
评论()
编辑
收藏
举报