Matlab 版 (精华区)
发信人: seesea (小学究), 信区: Matlab
标 题: 主导极点法降阶函数源程序
发信站: 哈工大紫丁香 (2001年02月16日15:15:35 星期五), 转信
说明: 1.适合SISO/MIMO系统。
2.在本人应用算例下调试通过,但不保证适合一切情况。
3.欢迎交流、完善。
源程序如下
function sysr=dmodred(sys0,minusmax)
%function sysr=dmodred(sys0,minusmax)
% 主导极点法降阶:Re<minusmax的零极点替换为-Re。
% sys0:原始系统模型(LTI object);
% minusmax:保留零极点实部最小界(负);
% sysr:降阶系统模型(LTI object)。
%
%by Wang Xitian, 2001-02-16, all rights reserved
%Institue of Power Engineering Control and Simulation
%Harbin Institute of Technology
%Harbin, PRC
if isa(sys0,'lti')
[Z0,P0,K0]=zpkdata(sys0);
[nout,nin]=size(Z0);
Zr=[];Pr=[];Kr=[];
Zio=[];Pio=[];Kio=[];
for ni=1:nin
for no=1:nout
Zio=Z0{no,ni};
Zre=real(Zio);
kid=find(Zre<minusmax);
rid=find(Zre>=minusmax);
Zr{no,ni}=Zio(rid);
Zk=prod(-Zio(kid));
Zk=real(Zk);
Pio=P0{no,ni};
Pre=real(Pio);
kid=find(Pre<minusmax);
rid=find(Pre>=minusmax);
Pr{no,ni}=Pio(rid);
Pk=prod(-Pio(kid));
Pk=real(Pk);
Kio=K0(no,ni);
Kio=Kio*Zk/Pk;
Kr(no,ni)=Kio;
end
end
sysr=zpk(Zr,Pr,Kr);
else,warning('the input model is not represented by a LTI object.');end
--
真理往往朴素,以致人们不相信它。
————列瓦尔特
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 241c02.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.796毫秒