source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/variablechange.m @ 37

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

Added original make3d

File size: 2.4 KB
Line 
1function [exponent_p_monoms_changed,varchange] = variablechange(exponent_p_monoms)
2%function [exponent_p_changed,varchange] = variablechange(exponent_p,monom_indicies)
3%VARIABLECHANGE Internal function to reduce monomials in SOS programs
4
5% Author Johan Löfberg
6% $Id: variablechange.m,v 1.3 2004/09/17 23:21:50 johanl Exp $
7
8n = size(exponent_p_monoms,2);
9exponent_p_monoms_changed = exponent_p_monoms;
10varchange = ones(1,n);
11
12% UGLY!!!!!!!!!!!!!!!!!! Loop and clean up...
13
14% Even multiple of 4?
15for i = 1:size(exponent_p_monoms,2)
16    rems = rem(exponent_p_monoms(:,i),4);
17    if all(rems==0) & all(even(exponent_p_monoms(:,i)/4))
18        exponent_p_monoms_changed(:,i)=exponent_p_monoms_changed(:,i)/4;
19        varchange(i)=4*varchange(i);
20    end
21end
22
23% Multiple of 3?
24for i = 1:size(exponent_p_monoms,2)
25    rems = rem(exponent_p_monoms(:,i),3);
26    if all(rems==0)
27        exponent_p_monoms_changed(:,i)=exponent_p_monoms_changed(:,i)/3;
28        varchange(i)=3;
29    end       
30end
31
32exponent_p_monoms = exponent_p_monoms_changed;
33
34% Even multiple of 2?
35for i = 1:size(exponent_p_monoms,2)
36    rems = rem(exponent_p_monoms(:,i),2);
37    if all(rems==0) & all(even(exponent_p_monoms(:,i)/2))
38        exponent_p_monoms_changed(:,i)=exponent_p_monoms_changed(:,i)/2;
39        varchange(i)=2*varchange(i);
40    end
41end
42
43return
44
45n = size(exponent_p,2);
46exponent_p_changed = exponent_p;
47varchange = ones(1,n);
48
49% UGLY!!!!!!!!!!!!!!!!!! Loop and clean up...
50
51% Even multiple of 4?
52for i = 1:length(monom_indicies)   
53    rems = rem(exponent_p(:,monom_indicies(i)),4);
54    if all(rems==0) & all(even(exponent_p(:,monom_indicies(i))/4))
55        exponent_p_changed(:,monom_indicies(i))=exponent_p_changed(:,monom_indicies(i))/4;
56        varchange(monom_indicies(i))=4*varchange(monom_indicies(i));
57    end
58end
59
60% Multiple of 3?
61for i = 1:length(monom_indicies)
62    rems = rem(exponent_p(:,monom_indicies(i)),3);
63    if all(rems==0)
64        exponent_p_changed(:,monom_indicies(i))=exponent_p_changed(:,monom_indicies(i))/3;
65        varchange(monom_indicies(i))=3;
66    end       
67end
68
69exponent_p = exponent_p_changed;
70
71% Even multiple of 2?
72for i = 1:length(monom_indicies)   
73    rems = rem(exponent_p(:,monom_indicies(i)),2);
74    if all(rems==0) & all(even(exponent_p(:,monom_indicies(i))/2))
75        exponent_p_changed(:,monom_indicies(i))=exponent_p_changed(:,monom_indicies(i))/2;
76        varchange(monom_indicies(i))=2*varchange(monom_indicies(i));
77    end
78end
Note: See TracBrowser for help on using the repository browser.