source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/setduals.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 
1function setduals(F,D_struc,K)
2
3D_struc = full(D_struc);
4if ~isempty(D_struc)
5   
6    % Equality constraints might have been converted
7    % to inequalities
8    if isfield(K,'fold')
9       D_struc = [-D_struc(1:K.fold)+D_struc(1+K.fold:2*K.fold);D_struc(2*K.fold+1:end)];
10       K.f = K.fold;
11       K.l = K.l-2*K.fold;
12    end
13   
14    Z = dual2cell(D_struc,K);
15   
16    Finfo = lmiinfo(F);
17    lmi_index = [];
18    j=1;
19   
20    if ~isempty(Finfo.sdp)
21        for i = 1:size(Finfo.sdp,1)
22            lmi_index = [lmi_index;Finfo.sdp(i,3)];
23            duals{j}=(Z.s{i}+Z.s{i}')/2;j = j+1;
24        end
25    end
26   
27    if ~isempty(Finfo.soc)
28        for i = 1:size(Finfo.soc,1)
29            lmi_index = [lmi_index;Finfo.soc(i,3)];
30            duals{j}=Z.q{i};j = j+1;
31        end
32    end
33   
34    if ~isempty(Finfo.rlc)
35        for i = 1:size(Finfo.rlc,1)
36            lmi_index = [lmi_index;Finfo.rlc(i,3)];
37            duals{j}=Z.r{i};j = j+1;
38        end
39    end
40   
41    if ~isempty(Finfo.lin)
42        top=1;
43        for i = 1:size(Finfo.lin,1)
44            lmi_index = [lmi_index;Finfo.lin(i,3)];
45            duals{j}=reshape(Z.l(top:top+Finfo.lin(i,1)*Finfo.lin(i,2)-1),Finfo.lin(i,1),Finfo.lin(i,2));j = j+1;
46            top = top+Finfo.lin(i,1)*Finfo.lin(i,2);
47        end
48    end
49    if ~isempty(Finfo.equ)
50        top=1;
51        for i = 1:size(Finfo.equ,1)
52            lmi_index = [lmi_index;Finfo.equ(i,3)];
53            duals{j}=reshape(Z.f(top:top+Finfo.equ(i,1)*Finfo.equ(i,2)-1),Finfo.equ(i,1),Finfo.equ(i,2));j = j+1;
54            top = top+Finfo.equ(i,1)*Finfo.equ(i,2);
55        end
56    end
57   
58    if ~isempty(lmi_index)
59        yalmip('setdual',lmi_index,duals);
60    end
61   
62end
Note: See TracBrowser for help on using the repository browser.