帮助中心帮助中心
解决非负线性最小二乘问题
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仅适用于solver-based方法。两种优化方法的讨论,请参阅首先选择具体问题具体分析或Solver-Based方法。
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 (___)以前,对于任何语法,另外返回值的平方2-norm残留,规范(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 =规范(C * x - d)
constrained_norm = 0.9118
unconstrained_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:“激活集”的信息:“优化终止。”
λ=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。
迭代次数超过options.MaxIter。
options.MaxIter
优化过程的信息,作为结构返回字段:
迭代
采取的迭代次数
算法
“激活集”
消息
退出消息
拉格朗日乘数法,作为一个真正的返回向量。满足互补条件的条目x ' *λ= 0。这意味着λ(i) < 0当x(我)大约是0,λ(我)大约是0当x (i) > 0。
x ' *λ= 0
λ(i) < 0
x(我)
λ(我)
x (i) > 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。
[1]劳森,c . l和r·j·汉森。解决最小二乘问题。上台北:普伦蒂斯霍尔》1974。23章,161页。
对于C / c++代码生成:
您必须启用对适应可变数组的支持。金宝app
退出消息的输出结构不是翻译。
之前介绍过的R2006a
mldivide|lsqlin|optimset|优化
mldivide
你有一个修改版的这个例子。你想打开这个例子与编辑?
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
选择一个网站
选择一个网站翻译内容,看到当地事件和提供。根据你的位置,我们建议您选择:。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。
联系你当地的办公室