我是靠谱客的博主 坦率哑铃,最近开发中收集的这篇文章主要介绍部分分式展开 matlab 自制函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

function result=patialfracexpan(tf)%%输入tf型变量的传递函数
b=cell2mat(tf.Numerator);
a=cell2mat(tf.Denominator);
[r,p,k] = residue(b,a);
m=[r,p,k];
result=residuemattotf(m);


function  t=residuemattotf (r)
s=size(r);
terms=s(1);
 tfunc=0;
assignin('base','tfunc',0);
for i=1:terms
    eval(['t',num2str(i),'=','tf(r(i,1),[1 -r(i,2)]);']);
    temp=tf(r(i,1),[1 -r(i,2)]);
    tf2sym(temp);
    tfunc=tfunc+sym_G1;
    t=vpa(tfunc);
end
assignin('base','tfunc',tfunc);
return









```matlab
function s=tf2sym(G1)

syms s ;

% 将G1(s)的 tf对象转变成 sym对象

[num,den]=tfdata(G1);

N=size(den);

for i=1:N(1)

for j=1:N(2)

Num=poly2sym(num{i,j},s);

Den=poly2sym(den{i,j},s);

sym_G1(i,j)=Num/Den;

end

end
s=sym_G1;
 assignin('base','sym_G1',sym_G1);
 assignin('caller','sym_G1',sym_G1);
% assignin('base','Latex',latex(sym_G1));

说明:
(1)将这3个函数分别用3个.m文件保存于同一matlab工作目录下才可
在盖目录下使用
(2)patialfracexpan 为主函数 其余为子函数
(3)patialfracexpan 输入:tf 类型的传递函数 输出:sym 类型展开式

注意:
(1)可能需要controlsystem toolbox
(2)未经严格测试 可能有bug
(3)2018b 版本可用 其他的未测试
(4)部分代码来源网络

例子:

sys=tf([1 2],[1 4 16])
patialfracexpan(sys)

运行结果:
ans =

0.5/(s + 2.0 - 3.4641016151377545870548926830117i) + 0.5/(s + 2.0 + 3.4641016151377545870548926830117i)

最后

以上就是坦率哑铃为你收集整理的部分分式展开 matlab 自制函数的全部内容,希望文章能够帮你解决部分分式展开 matlab 自制函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部