Code for Poisson SVD, also called EPCA (for Exponential PCA).
An example of how to call p1svd. Note that we don't expect zero error, since newp1svd constrains the first column of u to be constant; to get zero error, we could call newp1svd(x,5) instead.
% build a random matrix whose componentwise log has low rank
uu = randn(10,4);
vv = randn(4,100);
x = exp(uu*vv*.1);
% decompose it using EPCA and report error
[u,v]=newp1svd(x,4,50);
norm(x-exp(u*v))/norm(x)
Code for reconstruction of a new
vector using the basis learned in an EPCA.
An example of how to call newpproject, using the variables x and
u from the above p1svd example: