📄 datasaver.m
字号:
function data = datasaver(varargin)
%functiondata,functionGradientdata,functionHessiandata,constraintdata,constraintGradientdata,constraintHessiandata
persistent saved
%savedfunctiondata
%5persistent savedfunctionGradientdata
%persistent savedfunctionHessiandata
%persistent savedconstraintdata
%persistent savedconstraintGradientdata
%persistent savedconstraintHessiandata
%persistent m
%persistent n
%persistent xx
if nargin > 3
saved.savedfunctiondata = varargin{1};
saved.savedfunctionGradientdata = varargin{2};
saved.savedfunctionHessiandata = varargin{3};
saved.savedconstraintdata = varargin{4};
saved.savedconstraintGradientdata = varargin{5};
saved.savedconstraintHessiandata = varargin{6};
saved.m = size(saved.savedconstraintdata.F_struc,1);
saved.n = length(saved.savedfunctiondata.linearindicies);
saved.xx = [];
return
end
switch varargin{1}
case 1
F = saved.savedfunctiondata.F_struc;
x = varargin{2};
saved.xx=ones(1,size(saved.savedfunctiondata.monomtable,2));
saved.xx(saved.savedfunctiondata.linearindicies) = x(:)';
for i = 1:length(saved.savedfunctiondata.nonlinearindicies)
saved.xx(saved.savedfunctiondata.nonlinearindicies(i)) = prod(saved.xx.^saved.savedfunctiondata.monomtable(saved.savedfunctiondata.nonlinearindicies(i),:));
end
case 2
F = saved.savedfunctionGradientdata.F_struc;
case 3
F = saved.savedfunctionHessiandata.F_struc;
case 4
F = saved.savedconstraintdata.F_struc(1+varargin{3},:);
case 5
F = saved.savedconstraintGradientdata.F_struc;
start = 1+(varargin{3}-1)*saved.n;
F = F(varargin{3}:saved.m:end,:);
case 6
F = saved.savedconstraintHessiandata.F_struc;
F = full(F((varargin{3}-1)+(1:saved.m:saved.m*saved.n^2),:));
% F = F(1+(varargin{3}-1)*m:varargin{3}-1)*m,:);
otherwise
end
if isempty(saved.xx)
x = varargin{2};
saved.xx=ones(1,size(saved.savedfunctiondata.monomtable,2));
saved.xx(saved.savedfunctiondata.linearindicies) = x(:)';
for i = 1:length(saved.savedfunctiondata.nonlinearindicies)
saved.xx(saved.savedfunctiondata.nonlinearindicies(i)) = prod(saved.xx.^saved.savedfunctiondata.monomtable(saved.savedfunctiondata.nonlinearindicies(i),:));
end
end
data = F*[1;saved.xx(:)];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -