Here we provide two Matlab functions to solve large-scale equations with non-negative constraints.

1. pl_vt: solove a equation G*X=ob with X>=0
2. pl_vt_spar: solove a equation [G;sparG]*X=ob with X>=0, where G is a dense matrix and sparG is a sparse matrix

Note that if a non-negative constraint is applied, the user should set the input parameter "evalchar" to "X(X<0)=0;"

These two functions converge fast for non-negative least squares problem.

In test\test_deconvolution.m, it is compared with several classic methods or functions to show that it costs less time to get the optimized solution.

Reference:(these codes were originally developed to solve the finite-fault earthquake rupture process)
Zhang, Y., Feng, W., Chen, Y., Xu, L., Li, Z., & Forrest, D. (2012). The 2009 L'Aquila MW 6.3 earthquake: A new technique to locate the hypocentre in the joint inversion of earthquake rupture process. Geophysical Journal International, 191(3), 1417-1426.

Yong Zhang, Email: zhang-yong@pku.edu.cn; zhygn@163.com
School of Earth and Space Sciences, Peking University
