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)
页面执行时间:1.825毫秒