我遇到了使用Matlab找到函数的反拉角的问题。我获得了以下传递函数:
我尝试了像
这样的方法syms s t;
num=[0 0 0 1.658e24 -1.163e14 6.076e15];
den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
numsym=poly2sym(num);
densym=poly2sym(den);
transfer=numsym./densym;
ilaplace(transfer,s,t)
但没有得到可接受的结果。含义Matlab简单地返回:
此外,我尝试使用部分分数扩展,并且我将转移函数写入极点和零但是当我添加所有部分时,我没有得到原始传递函数。
syms s t;
num=[0 0 0 1.658e24 -1.163e14 6.076e15];
den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
numsym=poly2sym(num);
densym=poly2sym(den);
transfer=numsym./densym;
[z,p,r]=residue(num,den);
transfer1=(z(1)/(s-p(1)))+(z(2)/(s-p(2)))+(z(3)/(s-p(3)))+(z(4)/(s-p(4)))+(z(5)/(s-p(5)));
transfer1=vpa(simplifyFraction((transfer1),'Expand',true),2)
the
简化后的transfer1变量在分子中是4阶,而原始传递函数是2阶。如果有人帮我用任何方法找到下面表达式的传递函数,我会非常感激吗?
答案 0 :(得分:3)
有两件事需要考虑:
poly2sym
而不使用第二个参数来定义所需的变量,正在使用x
。因此poly2sym([1 1])
会返回x + 1
。在这里,您需要一个变量为s
的多项式,因为在ilaplace
中,您声明s
是初始变量。因此,请使用poly2sym([1 1],s)
作为结果{。}}。s + 1
和symsum
等未解析的元素,这些元素来自RootOf
后面的算法。使用命令ilaplace
,您可以消除此问题,并尽可能获得数值结果。代码将是这样的:
vpa
现在我们可以验证答案,以防您认为这可能只是一堆数字。因此,与WolframAlpha进行比较是有帮助的。我们需要将符号表达式转换为函数句柄以绘制结果:
syms s t;
num=[0 0 0 1.658e24 -1.163e14 6.076e15];
den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
numsym=poly2sym(num,s); % here the s as second argument
densym=poly2sym(den,s); % here the s as second argument
transfer=numsym./densym;
timeexp = ilaplace(transfer,s,t);
timenum = vpa(timeexp); % get numerical answer
pretty(timenum) % show the answer in nicer form
这给出了以下结果:
与WolframAlpha相比,我们可以说我们的结果肯定是合理的。
答案 1 :(得分:-1)
我可能会遗漏一些东西,但多项式函数的逆传递函数只是多项式比率的倒数。
即如果你有$ F \ left(S \ right)= \ frac {{P} {1} \ left(s \ right)} {{P} {2} \ left(s \ right)} $反向由$ F \左(S \右)= \ frac {{P} {2} \ left(s \ right)} {{P} {1} \ left(s \ right)} $。
你需要处理的是分子上多项式的零点 - 这可能解释了Delta函数。