我正在使用MATLAB_R2016a,目前我正在尝试找到MIMO系统的正确矩阵分数描述。假设我有一个表格矩阵:
[s^2+3s+1, s+1, s^3+2s; s^3+3, s^2-6, s-5];
是否有一种简单的方法可以为每个s级生成系数的子矩阵?像这样:
[0, 0, 1; 1, 0, 0] s^3 + [0, 0, 0 ; 0, 1, 0] s^2 + [3, 1, 2; 0, 0, 1] s + [1,1,0;3,-6,-5];
我认为可以用循环完成并提取每个多项式元素的度数,但是想知道人们是否找到了更简单的解决方法?
答案 0 :(得分:1)
我想你使用符号工具箱来处理多项式。因此,作为@10a commented,您可以使用coeffs
函数。
你只需要做一些解决方法来获得最终结果。
对于任意多项式,您可以使用下一个代码:
syms x
% find all coefficients for each polynomial. Results are of different sizes!
% because of different degrees of polinomils
coef = arrayfun( @(y) coeffs(y, 'All') , [2*x^2 + 3*x + 5, x^2+3; x^3, x + 7] ,...
'UniformOutput' , false)
% find max degree
max_size = cellfun( @(x) size(x,2), coef)
max_size = max(max_size(:))
% and finally fill with zeros all surplus places in arrays to get unified size
result = cellfun( @(x) [zeros(1, max_size - size(x,2)) x], coef, 'UniformOutput', false)