Matlab:如何分解传递函数

时间:2012-03-25 14:03:57

标签: matlab

我需要将传递函数分成2个传递函数,使得S2 = S1' 其实我有S2 * S1的产品

s = tf('s')
Suu = -1.6/((s-4)*(s+4))
Sux = -0.8/((s+4)*(s-4)*(s^2 + 0.1*s + 1))
Sxx = 0.3*(s - 4.163)*(s + 4.163)/((s+4)*(s-4)*(s^2 - 0.1*s + 1)*(s^2 + 0.1*s + 1))
Sxu = Sux'
SxdSdx = Sxx - (Sxu*Sux)/Suu

如果Sxd = Sdx',如何确定Sxd和Sdx? 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

您要做的是称为谱分解。关于谱分解算法的一篇很好的调查论文是A. H. Sayed和T. Kailath,“光谱分解方法的调查”,Numer。 Linear Algebra Appl。,vol。 8,pp.467-496,2001。

如果你的传递函数可以表示为一个有理函数(即s中的多项式的比率),那么你可以选择S1作为其零(分子多项式的根)和极点(根)的有理函数(分母多项式)都在左半平面中(即,实部小于零)。如果有真正的根,这些必须成对出现,您可以将每对中的一个成员分配给S1。如果你这样做,那么S1 * conj(S1)将是原始的传递函数。

你将传递函数考虑在内的数值方法取决于传递函数极点和零点的性质(它们有多少,它们有多近等等),你如何知道你的传递函数(你知道吗)通过它的多项式系数?你知道它在s空间的选定点上的值吗?),你知道它的准确程度(传递函数系数的准确度),以及你想要分解的准确度。