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

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

Added original make3d

File size: 2.0 KB
Line 
1function  data = datasaver(varargin)
2
3persistent saved
4
5if nargin > 3
6    saved.savedfunctiondata = varargin{1};
7    saved.savedfunctionGradientdata = varargin{2};
8    saved.savedfunctionHessiandata = varargin{3};
9    saved.savedconstraintdata = varargin{4};
10    saved.savedconstraintGradientdata = varargin{5};
11    saved.savedconstraintHessiandata = varargin{6};
12    saved.m = size(saved.savedconstraintdata.F_struc,1);
13    saved.n = length(saved.savedfunctiondata.linearindicies);
14    saved.monomials = [];
15    saved.x = randn(saved.n,1);
16    return
17end
18
19x = varargin{2};
20if ~isequal(x,saved.x)
21    % Recompute the monomial terms for new x
22    saved.monomials=ones(1,size(saved.savedfunctiondata.monomtable,2));
23    saved.monomials(saved.savedfunctiondata.linearindicies) = x(:)';
24   % changed = find(x-saved.x);
25   % changed = saved.savedfunctiondata.linearindicies(changed);
26   % changedmonomials = find(any(saved.savedfunctiondata.monomtable(saved.savedfunctiondata.nonlinearindicies,changed),2));
27   
28    for i = 1:length(saved.savedfunctiondata.nonlinearindicies)
29        saved.monomials(saved.savedfunctiondata.nonlinearindicies(i)) = prod(saved.monomials.^saved.savedfunctiondata.monomtable(saved.savedfunctiondata.nonlinearindicies(i),:));
30    end
31    saved.x = x;
32end
33
34switch varargin{1}
35    case 1
36        F = saved.savedfunctiondata.F_struc;
37        x = varargin{2};
38    case 2
39        F = saved.savedfunctionGradientdata.F_struc;
40    case 3
41        F = saved.savedfunctionHessiandata.F_struc;
42    case 4
43        if nargin == 2
44            % ipopt call
45            F = saved.savedconstraintdata.F_struc;
46        else
47            % pennlp call
48            F = saved.savedconstraintdata.F_struc(1+varargin{3},:);
49        end
50    case 5
51        F = saved.savedconstraintGradientdata.F_struc;
52        start = 1+(varargin{3}-1)*saved.n;
53        F = F(varargin{3}:saved.m:end,:);
54    case 6
55        F = saved.savedconstraintHessiandata.F_struc;
56        F = full(F((varargin{3}-1)+(1:saved.m:saved.m*saved.n^2),:));       
57    otherwise
58end
59
60data = (F*[1;saved.monomials(:)]);
Note: See TracBrowser for help on using the repository browser.