文档帮助中心文档
求解非负线性最小二乘问题
x = lsqnonneg (C, d)
x = lsqnonneg (C d选项)
x = lsqnonneg(问题)
[x, resnorm残留]= lsqnonneg (___)
[x, resnorm残留,exitflag,输出]= lsqnonneg (___)
[x, resnorm残留,exitflag,输出,λ)= lsqnonneg (___)
求解该形式的非负最小二乘曲线拟合问题
最小值 x ‖ C ⋅ x − d ‖ 2 2 , 在哪里 x ≥ 0.
请注意
lsqnonneg仅适用于基于求解器的方法。有关这两种优化方法的讨论,请参见首先选择基于问题或基于解决者的方法.
lsqnonneg
例子
x= lsqnonneg (C,d)返回向量x,最大限度地减少规范(C * x d)受x≥0.参数C和d必须是真实的。
x= lsqnonneg (C,d)
x
C
d
规范(C * x d)
x≥0
x= lsqnonneg (C,d,选项)结构中指定的优化选项最小化选项.使用optimset设置这些选项。
x= lsqnonneg (C,d,选项)
选项
optimset
x= lsqnonneg (问题)求最小值问题中所描述的结构问题.
x= lsqnonneg (问题)
问题
[x,resnorm,剩余) = lsqnonneg (___),另外返回残差的平方范数的值,规范(C * x d) ^ 2,并返回剩余部分直流* x.
[x,resnorm,剩余) = lsqnonneg (___)
resnorm
剩余
规范(C * x d) ^ 2
直流* x
[x,resnorm,剩余,exitflag,输出) = lsqnonneg (___)另外返回一个值exitflag的退出条件lsqnonneg,结构输出关于优化过程的信息。
[x,resnorm,剩余,exitflag,输出) = lsqnonneg (___)
exitflag
输出
[x,resnorm,剩余,exitflag,输出,λ) = lsqnonneg (___)另外返回拉格朗日乘子向量λ.
[x,resnorm,剩余,exitflag,输出,λ) = lsqnonneg (___)
λ
全部折叠
计算线性最小二乘问题的非负解,并将结果与无约束问题的解进行比较。
准备一个C矩阵和d问题的向量 最小值 | | C x - d | | .
C = [0.0372 0.2869 0.6861 0.7071 0.6233 0.6245 0.6344 0.6170];D = [0.8587 0.1781 0.0747 0.8405];
计算约束和无约束解。金宝搏官方网站
x =2×10 0.6929
xunc = C \ d
xunc =2×1-2.5627 - 3.1108
所有条目x是非负的,但是xunc是负的。
xunc
计算两个解的残差的范数。金宝搏官方网站
constrained_norm = norm(C*x - d)
constrained_norm = 0.9118
unconstrained_norm = norm(C*xunc - d)
unconstrained_norm = 0.6674
无约束解的残范数较小,因为约束只会增加残范数。
设置显示选项“最后一次”查看下面的输出lsqnonneg完成。
显示
“最后一次”
创建选项。
选择= optimset (“显示”,“最后一次”);
调用lsqnonneg期权结构。
x = lsqnonneg (C d选项);
优化终止。
调用lsqnonneg用输出来获得解、残差范数和残差向量。
获得解决方案和残留信息。
[x, resnorm残留]= lsqnonneg (C, d)
resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130
验证返回的残差范数是返回残差向量范数的平方。
规范(残余)^ 2
ans = 0.8315
请求所有输出参数来检查解决方案和解决方案过程lsqnonneg完成。
解决问题,请求所有输出参数。
[x, resnorm残留,exitflag,输出,λ)= lsqnonneg (C, d)
exitflag = 1
输出=结构体字段:迭代:1算法:'active-set'消息:'优化终止。
λ=2×1-0.1506 - -0.0000
exitflag是1,表示正确的解决方案。
1
x (1) = 0,以及相应的λ(1) ≠ 0,显示出正确的二元性。同样的,x (2) > 0,以及相应的λ(2)= 0.
x (1) = 0
λ(1)
0
x (2) > 0
λ(2)= 0
线性乘子,指定为实矩阵。代表变量C在这个问题
最小值 x ‖ C x − d ‖ 2 2 .
为了兼容性,的行数C必须等于?的长度d.
例子:C = [1, 2, 3, 1, 4, 4]
C = [1, 2, 3, 1, 4, 4]
数据类型:双
双
加性项,指定为实向量。代表变量d在这个问题
对于兼容性,长度d必须等于C.
例子:d =(1; 6。5)
d =(1; 6。5)
优化选项,指定为结构,如optimset的回报。您可以使用optimset在选项结构中设置或更改这些字段的值。看到优化选择参考的详细信息。
显示:
“通知”(默认)仅在函数不收敛时显示输出。
“通知”
“关闭”或“没有”显示没有输出。
“关闭”
“没有”
“最后一次”只显示最终输出。
TolX
终止上公差x,一个正标量。默认值是10 * eps *规范(C, 1) *长度(C).看到公差和停止标准.
10 * eps *规范(C, 1) *长度(C)
例子:选择= optimset(“显示”、“最后”)
选择= optimset(“显示”、“最后”)
数据类型:结构体
结构体
问题结构,指定为具有以下字段的结构。
解算器
“lsqnonneg”
解,返回实向量。的长度x和的长度一样吗d.
平方剩余范数,作为非负标量返回。等于规范(C * x d) ^ 2.
剩余,作为实向量返回。剩余的是d - C * x.
d - C * x
原因lsqnonneg已停止,返回为整数。
函数收敛到一个解x.
超过迭代次数选项。麦克斯特.
选项。麦克斯特
关于优化过程的信息,作为带有字段的结构返回:
迭代
迭代次数
算法
“激活集”
消息
退出消息
拉格朗日乘数,作为实向量返回。条目满足互补条件x ' *λ= 0.这意味着λ(i) < 0当x(我)大约是0,λ(我)大约是0当x(我)> 0.
x ' *λ= 0
λ(i) < 0
x(我)
λ(我)
x(我)> 0
的问题,d长度超过20,lsqlin可能比lsqnonneg.当d长度不到20,lsqnonneg通常效率更高。
lsqlin
在求解器之间进行转换C行多于列(意味着系统被过度确定),
相当于
[m, n] =大小(C);[x, resnorm残留,exitflag,输出,lambda_lsqlin] =…lsqlin (C, d,黑眼圈(n, n), 0 (n - 1));
唯一的区别是对应的拉格朗日乘数有相反的符号:λ= -lambda_lsqlin.ineqlin.
λ= -lambda_lsqlin.ineqlin
lsqnonneg使用中描述的算法[1].该算法从一组可能的基向量开始,并计算相关的对偶向量λ.然后选择中最大值对应的基向量λ把它从基中换出来,换另一个可能的候选人。这个过程一直持续到λ≤0.
λ≤0
的优化活动编辑器任务为lsqnonneg.
C. L.劳森和R. J.汉森。解决最小二乘问题.上鞍河,新泽西州:Prentice Hall. 1974。第23章,第161页。
C/ c++代码生成:
必须启用对可变大小数组的支持。金宝app
输出结构中的退出消息不会被翻译。
mldivide|lsqlin|optimset|优化
mldivide
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系