帮助中心帮助中心
求解非负线性最小二乘问题
x = lsqnonneg(C,d)
x = lsqnonneg(C,d,options)
X = lsqnonneg(问题)
[x,resnorm,residual] = lsqnonneg(___)
[x,resnorm,residual,exitflag,output] = lsqnonneg(___)
[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(___)
解决了非负最小二乘曲线的拟合问题
最小值 x ‖ C ⋅ x − d ‖ 2 2 , 在哪里 x ≥ 0.
例子
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(___),对于任何前面的语法,额外返回残差的平方2范数的值,规范(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
输出
lsqnonneg
[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,options);
优化终止。
调用lsqnonneg用输出得到解、残模和残向量。
获取解决方案和残留信息。
[x,resnorm,residual] = lsqnonneg(C,d)
Resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130
验证返回的剩余范数是返回的剩余向量的范数的平方。
规范(残余)^ 2
Ans = 0.8315
请求所有输出参数以检查之后的解决方案和解决方案过程lsqnonneg完成。
解决这个问题,请求所有输出参数。
[x,resnorm,residual,exitflag,output,lambda] = 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在这个问题上
的行数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)
例子:options = optimset('Display','final')
options = optimset('Display','final')
数据类型:结构体
结构体
问题结构,指定为具有以下字段的结构。
解算器
“lsqnonneg”
解,作为实向量返回。的长度x和的长度一样吗d.
残差范数的平方,作为非负标量返回。等于规范(C * x d) ^ 2.
残差,作为实向量返回。残差是d - C*x.
d - C*x
原因lsqnonneg停止,以整数形式返回。
函数收敛到一个解x.
超过迭代次数选项。麦克斯特.
选项。麦克斯特
关于优化过程的信息,作为一个带字段的结构返回:
迭代
迭代次数
算法
“激活集”
消息
退出消息
拉格朗日乘子,作为实向量返回。这些项满足互补条件X '* = 0.这意味着i < 0当x(我)大约是0,λ(我)大约是0当X (i) > 0.
X '* = 0
i < 0
x(我)
λ(我)
X (i) > 0
lsqnonneg使用中描述的算法[1].该算法从一组可能的基向量开始,并计算相关的对偶向量λ.然后选择中最大值对应的基向量λ把它从基中换出来换另一个可能的候选。这种情况一直持续到≤0.
≤0
的优化活动编辑器任务提供了一个可视化界面lsqnonneg.
劳森,C. L.和R. J.汉森。求解最小二乘问题.新泽西州上马鞍河:普伦蒂斯大厅,1974年。第23章,第161页。
C/ c++代码生成:
必须启用对可变大小数组的支持。金宝app
输出结构中的退出消息没有转换。
代码生成不支持此函数的稀疏矩阵输入。金宝app
backgroundPool
ThreadPool
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
R2006a之前介绍
mldivide|optimset|优化
mldivide
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处