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