文档帮助中心
求解非负线性最小二乘问题
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。
例子
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,并返回的残留d-C * X。
(x,resnorm,剩余) = lsqnonneg (___)
resnorm
剩余
规范(C * x d) ^ 2
d-C * 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选项);
优化终止。
调用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在这个问题
为兼容性,的行数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”
得到a的最简单的方法问题结构是从优化应用程序导出问题。
解,作为实向量返回。的长度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
lsqnonneg使用中所描述的算法[1]。该算法从一组可能的基向量开始,并计算相关的对偶向量λ。然后选择中最大值对应的基向量λ把它从基础上交换另一个可能的候选人。这个过程一直持续到拉姆达≤0。
拉姆达≤0
[1] Lawson, c.l.和r.j. Hanson。解最小二乘问题。上马鞍河,NJ:Prentice Hall出版社。1974年第23章,第161。
C/ c++代码生成:
必须启用对可变大小数组的支持。万博1manbetx
在输出结构中的退出消息未翻译。
代码生成器不支持此功能稀疏矩阵输入。万博1manbetx
mldivide|optimset
mldivide
这个例子的修改版本的系统上存在。你要打开这个版本呢?
您点击了对应于以下MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译内容,并查看当地的活动和优惠。根据您的位置,我们建议您选择:。
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
请联系您当地的办事处