⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datasaver.m

📁 国外专家做的求解LMI鲁棒控制的工具箱,可以相对高效的解决LMI问题
💻 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 + -