资源简介

1、matlab代码,实现稀疏表示中L1范数最小化的求解问题。 2、稍微修改了一下函数的接口,解决了用C++调用这个matlab函数时参数传参问题。因为该函数用到了varargin,可变参数传参,而C++参数传递都是固定的。 3、代码我自己亲自用opencv调用过,可以使用。 4、如果不用将Matlab的.m文件生成dll供c++调用,则可以去我的资源里面查找一下,里面我上传了一个由m文件生成的.h,.dll,.lib供C++调用的文件。直接将三个文件放入到C++代码可以访问到的地方即可。

资源截图

代码片段和文件信息

function [xstatushistory] = l1_ls_nonneg(Ain1in2varargin)%varargin表示可以输入多个变量
%
% l1-Regularized Least Squares Problem Solver //L1范数的最小化的求解
%
%   l1_ls solves problems of the following form://L1范数的如下形式
%
%       minimize   ||A*x-y||^2 + lambda*sum(x_i)
%       subject to x_i >= 0 i=1...n
%
%   where A and y are problem data and x is variable (described
%   below).%A和y是问题数据x是变量
%
% CALLING SEQUENCES
%   [xstatushistory] = l1_ls_nonneg(Aylambda [tar_gap[quiet]])
%   [xstatushistory] = l1_ls_nonneg(AAtmnylambda [tar_gap[quiet]]))
%
%   if A is a matrix either sequence can be used.
%   if A is an object (with overloaded operators) At m n must be
%   provided.
%
% INPUT
%   A       : mxn matrix; input data. columns correspond to features.
%
%   At      : nxm matrix; transpose of A.//A的转置
%   m       : number of examples (rows) of A//样本数目
%   n       : number of features (column)s of A//特征数目
%
%   y       : m vector; outcome.//m维向量。输出
%   lambda  : positive scalar; regularization parameter//正的标量,规则化参数
%
%   tar_gap : relative target duality gap (default: 1e-3)//相关目标的对偶关系
%   quiet   : boolean; suppress printing message when true (default: false)
%
%   (advanced arguments)
%       eta     : scalar; parameter for PCG termination (default:
%       1e-3)//标量终止条件
%       pcgmaxi : scalar; number of maximum PCG iterations (default:
%       5000)//标量,最大的迭代次数。
%
% OUTPUT
%   x       : n vector; classifier//n个向量分类器
%   status  : string; ‘Solved‘ or ‘Failed‘//状态:解决或失败
%
%   history : matrix of history data. columns represent (truncated) Newton
%             iterations; rows represent the following:
%            - 1st row) gap
%            - 2nd row) primal objective
%            - 3rd row) dual objective
%            - 4th row) step size
%            - 5th row) pcg iterations
%            - 6th row) pcg status flag
%
% USAGE EXAMPLES
%   [xstatus] = l1_ls_nonneg(Aylambda);
%   [xstatus] = l1_ls_nonneg(AAtmnylambda0.001);
%
 
% AUTHOR    Kwangmoo Koh 
% UPDATE    Apr 10 2008
%
% COPYRIGHT 2008 Kwangmoo Koh Seung-Jean Kim and Stephen Boyd

%------------------------------------------------------------
%       INITIALIZE
%------------------------------------------------------------

% IPM PARAMETERS
MU              = 2;        % updating parameter of t//参数t的更新
MAX_NT_ITER     = 400;      % maximum IPM (Newton) iteration//最大迭代次数

% LINE SEARCH PARAMETERS
ALPHA           = 0.01;     % minimum fraction of decrease in the objective//减少的最小分数
BETA            = 0.5;      % stepsize decrease factor//步长
MAX_LS_ITER     = 100;      % maximum backtracking line search iteration//最大回溯线查找迭代

% VARIABLE ARGUMENT HANDLING
% if the second argument is a matrix or an operator the calling sequence is
%   l1_ls(AAtylambdamn [tar_gap[quiet]]))
% if the second argument is a vector the calling sequence is//如果是向量调用下面的参数
%   l1_ls(Aylambda [tar_gap[quiet]])


% if ( (isobject(varargin{1}) || ~isvector(varargin{1})

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8431  2013-09-19 21:03  l1_ls_nonneg\l1_ls_nonneg.m

     目录          0  2013-09-24 09:06  l1_ls_nonneg

----------- ---------  ---------- -----  ----

                 8431                    2


评论

共有 条评论

相关资源