source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/lmirank/trheuristic.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 1.7 KB
Line 
1
2function y = trheuristic(At,c,K)
3% y = trheuristic(At,c,K);
4%
5% TRHEURISTIC uses SeDuMi to solve
6%
7%   min     tr(G(y))
8%   s.t.    F(y) := F0 + y1*F1 + ... + ym*Fm >= 0,     
9%           G(y) := G0 + y1*G1 + ... + ym*Gm >= 0.
10%
11% This is the trace heuristic for trying to solve rank constrained LMIs.
12%
13% TRHEURISTIC is used by LMIRANK for initialization.
14%
15% Inputs:
16%       At      = -[vec(F1),...,vec(Fm);
17%                   vec(G1),...,vec(Gm)]
18%       c       = [vec(F0);
19%                  vec(G0)]
20%       K       : problem parameters (K.s and K.rank)
21%
22% Outputs:
23%       y       : solution   
24%
25% NOTE: It is possible to have multiple 'F' LMIs and multiple 'G' LMIs.
26%       For simplicity, the description above assumes there is only
27%       one 'F' LMI and one 'G' LMI. If there are multiple 'G' LMIs,
28%       i.e., if K.s(j)~=K.rank(j) for more than one j, then only the
29%       last 'G' LMI is treated as such; the others are treated as
30%       'F' LMIs. LP inequality constraints can also be included.
31%
32% See also LMIRANK.
33
34% Author Robert Orsi
35% Feb 2005
36
37
38%%%% SeDuMi:   
39%   min     -b'*y
40%   s.t.    c-At*y \in K
41
42%%%% Create b
43m=size(At,2);
44b=zeros(m,1);
45if isfield(K,'l')
46    index=K.l;
47else   
48    index=0;
49end
50for j=1:length(K.s),
51    if K.s(j)~=K.rank(j)
52        for i=1:m,
53            P=reshape(At(index+1:index+K.s(j)^2,i),K.s(j),K.s(j));
54            b(i)=trace(P);
55        end
56    end
57    index=index+K.s(j)^2;
58end
59
60%%%% Set parameters
61pars.fid=0; % Suppress SeDuMi on-screen output.
62pars.eps=0; % was 1e-14. 
63            % pars.eps=0 means SeDuMi runs as long as it can make progress.
64
65%%%% Call SeDuMi         
66[x,y,info] = sedumi(At',b,c,K,pars);
67
68
69
70
Note: See TracBrowser for help on using the repository browser.