0

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

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

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

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

1 回答 1

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
于 2013-03-23T04:30:37.247 回答