lsqnonneg
求解非负线性最小二乘问题
语法
说明
示例
输入参数
输出参数
提示
对于
d
的长度超过 20 的问题,lsqlin
可能比lsqnonneg
更快。当d
的长度小于 20 时,lsqnonneg
通常效率更高。当
C
的行数多于列数时(意味着方程组超定),要在求解器之间进行转换,请使用以下语法[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d)
等效于
[m,n] = size(C); [x,resnorm,residual,exitflag,output,lambda_lsqlin] = ... lsqlin(C,d,-eye(n,n),zeros(n,1));
唯一区别是对应的拉格朗日乘数具有相反符号:
lambda = -lambda_lsqlin.ineqlin
。
算法
lsqnonneg
使用 [1] 中所述的算法。算法以一组可能的基向量开始并计算关联的对偶向量 lambda
。然后将选择对应于 lambda
中的最大值的基向量,以便将该基向量交换为其他可能的向量。此操作会一直继续,直至 lambda ≤ 0
。
替代功能
App
优化实时编辑器任务为 lsqnonneg
提供可视化界面。
参考
[1] Lawson, C. L. and R. J. Hanson. Solving Least-Squares Problems. Upper Saddle River, NJ: Prentice Hall. 1974. Chapter 23, p. 161.
扩展功能
版本历史记录
在 R2006a 之前推出