source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/modules/sos/blockmonomialreduction.m @ 37

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

Added original make3d

File size: 1.5 KB
Line 
1function N = blockmonomialreduction(exponent_p,N,options)
2%BLOCKMONOMIALREDUCTION Internal function to reduce monomials in SOS problem
3
4% Author Johan Löfberg
5% $Id: blockmonomialreduction.m,v 1.1 2006/03/30 13:39:36 joloef Exp $
6
7if options.sos.inconsistent & ~options.sos.csp
8    n_removed = 1;
9    while n_removed>0
10        t = cputime;
11        N_unique = [];
12        for i = 1:length(N)
13            for j = 1:size(N{i},1)
14                for k = j:size(N{i},1)
15                    N_unique = [N_unique;N{i}(j,:)+N{i}(k,:)];
16                end
17            end
18        end
19       
20        n_removed = 0;
21        for i = 1:length(N)
22            rmv = [];
23            for j = 1:size(N{i},1)
24                nn = N{i}(j,:)*2;
25                if isempty(findrows(exponent_p,nn)) & (length(findrows(N_unique,nn))==1)
26                    rmv = [rmv j];               
27                end
28            end
29            N{i}(rmv,:)=[];
30            n_removed = n_removed + length(rmv);
31        end
32        M=[];k=1;
33        for i = 1:length(N)
34            if ~isempty(N{i})
35                M{k,1}=N{i};k=k+1;
36            end
37        end
38        N=M;
39        t = cputime-t;
40        if n_removed>0
41            the_text = 'Block-diagonal inconsistensies..Keeping ';
42            for i = 1:length(N)
43                the_text = [the_text num2str(size(N{i},1)) 'x' num2str(size(N{i},1)) ' '];
44            end
45            the_text = [the_text ' (' num2str(t) 'sec)'];
46            disp(the_text);
47        end
48    end
49end
Note: See TracBrowser for help on using the repository browser.