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

📄 polyadj.m

📁 Software for design and tuninig of SISO and MIMO contol systems
💻 M
字号:
function [num,den,dead]=polyadj(nummt,denmt,deadmt,use_Pade)
% function [num,den,dead]=polyadj(nummt,denmt,deadmt,use_Pade)
% find the adjoint of the transfer function matrix described by
% numerator polynomial(nummt), denominator polynomial (denmt), and
% matrix of dead times. The function can also approximate dead times by
% Pade's method with the order given in the use_Pade variable.

if nargin <= 3, use_Pade = 0; end
if ~iscell(nummt)
    errordlg('Not a cell array defined for IMCTUNE !');
    return
end
[m,n]=size(nummt);
if m ~= n
    errordlg('Not a square matrix!');
    return
end
tempx=iscell(deadmt);
if tempx % Take care in case that A is cell array
	temp=zeros(n,n);
   for i=1:n
      for j=1:n
         temp(i,j)=mt2dt(deadmt{i,j},[]);
      end
   end
   deadmt=temp;
end
if isempty(denmt) | any(iscellempty(denmt))
   for i=1:n
      for j=1:n
         denmt{i,j}=1;
      end
   end
end   
if use_Pade & ~all(deadmt(:)==0)
   for i=1:n
      for j=1:n
         [temp,temp1]=pade(deadmt(i,j),use_Pade);
         nummt{i,j}=conv(nummt{i,j},temp);
         denmt{i,j}=conv(denmt{i,j},temp1);
      end
   end
   deadmt=zeros(n,n);
end
for i=1:n
   for j=1:n
      nummt1=nummt;
      nummt1(i,:)=[];
      nummt1(:,j)=[];
      denmt1=denmt;
      denmt1(i,:)=[];
      denmt1(:,j)=[];
      deadmt1=deadmt;
      deadmt1(i,:)=[];
      deadmt1(:,j)=[];
      [num(j,i,:),den(j,i,:),dead(j,i,:)]=polydet(nummt1,denmt1,deadmt1,use_Pade);
      for k=1:length(dead(j,i,:))
         num{j,i,k}=num{j,i,k}*(-1)^(i+j);
      end
   end
end         

⌨️ 快捷键说明

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