📄 cnt_uncm.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 + -