<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Brief History of Nonnegative Least Squares in MATLAB</title>
	<atom:link href="http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/</link>
	<description>Loren Shure works on design of the MATLAB language at MathWorks. She writes here about once a week on MATLAB programming and related topics.</description>
	<lastBuildDate>Mon, 13 Feb 2012 13:24:10 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Steve Grikschat</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-32587</link>
		<dc:creator>Steve Grikschat</dc:creator>
		<pubDate>Thu, 03 Nov 2011 21:08:10 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-32587</guid>
		<description>Hi Alex,

lsqnonneg is not benchmarked against other code. I&#039;m unaware of any results comparisons with TSNNLS or other software, although I&#039;m sure they exist somewhere.

You might want to look for comparisons of accuracy as well, if it is a concern. From the short description, it says that it uses a Cholesky factorization, which leads me to believe that the normal equations (including &lt;pre&gt;A&#039;*A&lt;/pre&gt;) are explicitly formed. This can be bad if A is ill-conditioned. 

I&#039;m also sure you can make a MEX wrapper to call this code as well.

Regards,
+Steve</description>
		<content:encoded><![CDATA[<p>Hi Alex,</p>
<p>lsqnonneg is not benchmarked against other code. I&#8217;m unaware of any results comparisons with TSNNLS or other software, although I&#8217;m sure they exist somewhere.</p>
<p>You might want to look for comparisons of accuracy as well, if it is a concern. From the short description, it says that it uses a Cholesky factorization, which leads me to believe that the normal equations (including
<pre>A'*A</pre>
</p><p>) are explicitly formed. This can be bad if A is ill-conditioned. </p>
<p>I&#8217;m also sure you can make a MEX wrapper to call this code as well.</p>
<p>Regards,<br />
+Steve</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex James</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-32586</link>
		<dc:creator>Alex James</dc:creator>
		<pubDate>Thu, 03 Nov 2011 17:55:37 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-32586</guid>
		<description>Hi Loren,

The code TSNNLS claims to be substantially faster than the matlab implementation (as of the 2009 writing presumably) with comparable solutions.
http://www.jasoncantarella.com/webpage/index.php?title=Tsnnls
Have you compared the most recent matlab lsqnonneg with the speed and results of this code, or any others, or is the matlab implementation developed without reference to other codes? If these comparisons have been done, do you know where we can find a report about them, and is it possible to run these codes through a mex wrapper from within matlab?

Thanks!</description>
		<content:encoded><![CDATA[<p>Hi Loren,</p>
<p>The code TSNNLS claims to be substantially faster than the matlab implementation (as of the 2009 writing presumably) with comparable solutions.<br />
<a href="http://www.jasoncantarella.com/webpage/index.php?title=Tsnnls" rel="nofollow">http://www.jasoncantarella.com/webpage/index.php?title=Tsnnls</a><br />
Have you compared the most recent matlab lsqnonneg with the speed and results of this code, or any others, or is the matlab implementation developed without reference to other codes? If these comparisons have been done, do you know where we can find a report about them, and is it possible to run these codes through a mex wrapper from within matlab?</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Derya Ozyurt</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-31316</link>
		<dc:creator>Derya Ozyurt</dc:creator>
		<pubDate>Thu, 06 May 2010 15:57:09 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-31316</guid>
		<description>Hi Jing,
I am assuming that you don&#039;t have Optimization Toolbox. If you have there are several options to tackle your problem. 

In MATLAB I can think of some workarounds that may help you.

(1) If your energy constraint is linear (this is not likely but may be you can linearize it) you can append it to the pair C,d in lsqnonneg(C,d). Note that at the end lsqnonneg will reduce NORM(d-C*X): your linear constraint may be satisfied at this point (no guarantees, though). Another note: if you have a linear inequality, don&#039;t forget to add a slack variable to make your constraint an equality.

(2) If you cannot (don&#039;t want to) linearize your energy constraint, you can use fminsearch by creating your own objective function and adding your energy constraint with a penalty parameter in front, i.e. something like
min NORM(d-C*X) + aPenParameter * g(X)
where g(X) = 0.

I hope this helps.
Best Regards,
Derya</description>
		<content:encoded><![CDATA[<p>Hi Jing,<br />
I am assuming that you don&#8217;t have Optimization Toolbox. If you have there are several options to tackle your problem. </p>
<p>In MATLAB I can think of some workarounds that may help you.</p>
<p>(1) If your energy constraint is linear (this is not likely but may be you can linearize it) you can append it to the pair C,d in lsqnonneg(C,d). Note that at the end lsqnonneg will reduce NORM(d-C*X): your linear constraint may be satisfied at this point (no guarantees, though). Another note: if you have a linear inequality, don&#8217;t forget to add a slack variable to make your constraint an equality.</p>
<p>(2) If you cannot (don&#8217;t want to) linearize your energy constraint, you can use fminsearch by creating your own objective function and adding your energy constraint with a penalty parameter in front, i.e. something like<br />
min NORM(d-C*X) + aPenParameter * g(X)<br />
where g(X) = 0.</p>
<p>I hope this helps.<br />
Best Regards,<br />
Derya</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JingGU</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-31312</link>
		<dc:creator>JingGU</dc:creator>
		<pubDate>Thu, 06 May 2010 01:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-31312</guid>
		<description>Hi Loren,

Thanks for your contribution on the lsqnonneg. It does help me a lot. I am currently looking into some problem invovled with minimizing the standard non-negative least squares and an extra constraint, e.g. the energy constraint to smooth the spikes provided by the nnls and the misfit derived from the modified minimization equation would be a bit larger than the standard nnls. Is there any function built-in matlab could do this?

Thank you,
Jing</description>
		<content:encoded><![CDATA[<p>Hi Loren,</p>
<p>Thanks for your contribution on the lsqnonneg. It does help me a lot. I am currently looking into some problem invovled with minimizing the standard non-negative least squares and an extra constraint, e.g. the energy constraint to smooth the spikes provided by the nnls and the misfit derived from the modified minimization equation would be a bit larger than the standard nnls. Is there any function built-in matlab could do this?</p>
<p>Thank you,<br />
Jing</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lai tao</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-31292</link>
		<dc:creator>lai tao</dc:creator>
		<pubDate>Thu, 29 Apr 2010 05:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-31292</guid>
		<description>I have a problem about non-neglative least square. I am so exited to see the comand (lsqnonneg) on the website.
Thanks for your contribution sincerely!</description>
		<content:encoded><![CDATA[<p>I have a problem about non-neglative least square. I am so exited to see the comand (lsqnonneg) on the website.<br />
Thanks for your contribution sincerely!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-30420</link>
		<dc:creator>Loren</dc:creator>
		<pubDate>Fri, 26 Jun 2009 19:33:57 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-30420</guid>
		<description>Just saw Marcelo&#039;s note on the newsgroup:

lsqnonneg was upgraded in version R2008b; it now uses sparse linear algebra if the
matrix is sparse (it uses &quot;\&quot;, backslash).

R2008b Release notes:
http://www.mathworks.com/access/helpdesk/help/techdoc/rn/brqyzsl-1.html
(See &quot;Upgrades to lsqnonneg&quot;.)

-Marcelo</description>
		<content:encoded><![CDATA[<p>Just saw Marcelo&#8217;s note on the newsgroup:</p>
<p>lsqnonneg was upgraded in version R2008b; it now uses sparse linear algebra if the<br />
matrix is sparse (it uses &#8220;\&#8221;, backslash).</p>
<p>R2008b Release notes:<br />
<a href="http://www.mathworks.com/access/helpdesk/help/techdoc/rn/brqyzsl-1.html" rel="nofollow">http://www.mathworks.com/access/helpdesk/help/techdoc/rn/brqyzsl-1.html</a><br />
(See &#8220;Upgrades to lsqnonneg&#8221;.)</p>
<p>-Marcelo</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-30419</link>
		<dc:creator>Loren</dc:creator>
		<pubDate>Fri, 26 Jun 2009 13:56:07 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-30419</guid>
		<description>Tom-

I&#039;m not aware of one.  We&#039;d love to have your contribution on MATLAB Central File Exchange if/when you have one!

--Loren</description>
		<content:encoded><![CDATA[<p>Tom-</p>
<p>I&#8217;m not aware of one.  We&#8217;d love to have your contribution on MATLAB Central File Exchange if/when you have one!</p>
<p>&#8211;Loren</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Clark</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-30418</link>
		<dc:creator>Tom Clark</dc:creator>
		<pubDate>Fri, 26 Jun 2009 13:42:50 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-30418</guid>
		<description>Loren,

Do you happen to know if there is an alternative version of lsqnonneg which will handle large, sparse matrices? 

The current version generates a full matrix at line 159, so is causing me memory issues. 

I&#039;ll work on one if there&#039;s not an algorithm floating around... in that event, I&#039;ll send it to you once I finish (IF I finish!).

Kind regards

Tom Clark</description>
		<content:encoded><![CDATA[<p>Loren,</p>
<p>Do you happen to know if there is an alternative version of lsqnonneg which will handle large, sparse matrices? </p>
<p>The current version generates a full matrix at line 159, so is causing me memory issues. </p>
<p>I&#8217;ll work on one if there&#8217;s not an algorithm floating around&#8230; in that event, I&#8217;ll send it to you once I finish (IF I finish!).</p>
<p>Kind regards</p>
<p>Tom Clark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-30226</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Thu, 23 Apr 2009 18:18:14 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-30226</guid>
		<description>Thanks Loren, I&#039;ll take a look! (I just got back to investigating this problem)</description>
		<content:encoded><![CDATA[<p>Thanks Loren, I&#8217;ll take a look! (I just got back to investigating this problem)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren</title>
		<link>http://blogs.mathworks.com/loren/2006/12/12/brief-history-of-nonnegative-least-squares-in-matlab/#comment-29914</link>
		<dc:creator>Loren</dc:creator>
		<pubDate>Wed, 03 Dec 2008 23:01:56 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/loren/?p=69#comment-29914</guid>
		<description>Eric-

I don&#039;t have anything.  You can check our documentation and the book I cite above.

--Loren</description>
		<content:encoded><![CDATA[<p>Eric-</p>
<p>I don&#8217;t have anything.  You can check our documentation and the book I cite above.</p>
<p>&#8211;Loren</p>
]]></content:encoded>
	</item>
</channel>
</rss>

