从残留结果中获取符号表达式

时间:2013-03-23 02:53:44

标签: matlab

使用残差函数,我得到一些矢量变量的结果:

[r,p,k] =残基(b,a)

有没有办法从返回结果构建一个符号表达式(在我选择的变量上,例如'x'),如:

eq = residue2sym(r,p,k)
pretty(eq)

1 个答案:

答案 0 :(得分:0)

最后我自己实现了它:

function eq = residue2sym( R,P,K )

syms s

eq = 0;

lastR = NaN;
lastP = NaN;
multiplicityCounter = 1;
for i = 1:length(R)
    rc = R(i);
    pc = P(i);

    if(~isnan(lastP) )
        if(pc == lastP && abs(lastR) < 1e-15)   % Quando existe multiplicidade, o R correspondente ao primeiro P
                                                % da multiplicidade deveria
                                                % ser 0, mas estranhamente
                                                % aparece como -4.4409e-16.
                                                % O que deveria ser uma
                                                % comparação com 0 então
                                                % vira uma comparação para
                                                % um módulo bem pequeno
            multiplicityCounter = multiplicityCounter + 1;
        else
            eq = eq + lastR/(s - lastP)^multiplicityCounter;
            multiplicityCounter = 1;
        end
    end
    lastR = rc;
    lastP = pc;
end
if(~isnan(lastP))
    eq = eq + lastR/(s - lastP)^multiplicityCounter;
end

 if(~isempty(K))
     eq = eq + sum(s.^(0:length(K)));
 end

eq = vpa( eq, 2);

end