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

📄 cnt_uncm.m

📁 内模控制器(IMC)工具箱。包括参数整定、PID控制器参数转换等
💻 M
字号:
function [nxtcnt,varargout]=cnt_unc(varargin)

% function [Xn,Xd,Xdt,pd]=cnt_uncX(Xn,Xd,Xdt,pd,Xunidn,Xunidd,Xuniddt,unidpd)
% This function generate cell array of metrices representing process uncertaintiy 
% parameters where X are cell arrays of matrices. For example, the metrix of 
% the form [ 2i 1; i 1 ] represent polynonial of (x(2)*s+1)*(x(1)*s+1) and all of 
% (nxtcnt is the maximum number of uncertain parameters returned)
nxtcnt=0;
cnt=[0];
flag=[];
nout = max(nargout,1)-1;
if nargin == 2*nout
   [a,b,c,d]=size(varargin{1});
   for h=1:d % Resolve uncertainty for P
   for j=1:a
      for k=1:b
         for l=1:c
            if nout > 3
            for i=1:3
            [varargout{i}{j,k,l,h},nxtcnt,cnt,flag]=arange(varargin{i}{j,k,l,h},...
               varargin{nout+i}{j,k,l,h},nxtcnt,cnt,flag);
         	end
         else 
            for i=1:nout
            [varargout{i}{j,k,l,h},nxtcnt,cnt,flag]=arange(varargin{i}{j,k,l,h},...
               varargin{nout+i}{j,k,l,h},nxtcnt,cnt,flag);
         	end
         end; end
      end;
   end
   end
   if nout > 3
      for j=1:a  %Resolve uncertainty for Pd
      for k=1:b
         for i=4:nout
            [varargout{i}{j,k},nxtcnt,cnt,flag]=arange(varargin{i}{j,k},...
               varargin{nout+i}{j,k},nxtcnt,cnt,flag);
         end
      end
   	end
	end
else
   error('function input-output does not match');
end
nxtcnt=max(cnt);   

%%// subfunction definition //
function [n,nxtcnt,cnt,flag]=arange(n,unidn,nxtcnt,cnt,flag)
[row,col]=size(n);
for i=1:row
 for j=1:col
  if imag(n(i,j)) ~= 0
    if (unidn(i,j)==0)
      nxtcnt=max(cnt)+1;
      flag=[flag 0];
      cnt=[cnt nxtcnt];
    else
      if ~isempty(flag) & any(flag==unidn(i,j))
        k=min(find(flag==unidn(i,j)));
        nxtcnt=cnt(k+1);
        flag=[flag unidn(i,j)];
        cnt=[cnt nxtcnt]; 
      else
        nxtcnt=max(cnt)+1;
        flag=[flag unidn(i,j)];
        cnt=[cnt nxtcnt];
      end  
   end  
   n(i,j)=sign(imag(n(i,j)))*sqrt(-1)*nxtcnt;
  end
 end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -