资源简介
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
- 上一篇:c++课程表
- 下一篇:基于opencv人眼定位算法C++工程
评论
共有 条评论