Transfer function of higher order
Mostrar comentarios más antiguos
Dear all,
I need to input a transfer function of the form shown below:
G(s) = 1/{((s+1)^10)*((s+3)^10)}
I have two questions:
1)- I am using conv command in a for loop to generate (s+1)^10, the most interesting thing that i observe that the roots of the polynomial that i obtain is NOT 1 with algebraic multiplicity of 10. Even if you go for (s+1)^3 or (s+1)^4, the roots won't be three times or four times 1 but somewhere near to 1 (not exactly 1). WHY IT IS SO?
2)- Surprisingly, the system G, when converted to ss form using tf2ss, the state-space realization is not minimal. BUT how on earth this is possible? there is no zero in G, where the pole zero cancellation is occurring so that the G is not controllable or observable?
Thanks in advance.
1 comentario
Azzi Abdelmalek
el 1 de Ag. de 2012
Editada: Azzi Abdelmalek
el 1 de Ag. de 2012
when matlab resolves roots of your polynom, it uses a numerical method, that means there will be some errors calculations. so, where is the problem? i checked that the system is not controllable, i think it's the representation tf2ss is not adequate.
Respuestas (2)
Azzi Abdelmalek
el 1 de Ag. de 2012
Editada: Azzi Abdelmalek
el 1 de Ag. de 2012
% to generate use poly without loop instead conv:
N=1 % numerator
D=poly([ones(1,10)*(-1) ones(1,10)*(-3)]) % -1 and -3 are your poles
[A,b,c,d]=tfn2ss(N,D) % my function to find another ss representation (see below)
%then check your controllabilité
% the function ft2re
function [F,h,c,d]=tfn2ss(N,D)
if nargin==1;D=N;N=1;end
D1=D(2:end);n=length(D1);m=length(N);
if m==n;N1=N;else N1=[zeros(1,n-m) N];end
F=[-D1' [eye(n-1) ; zeros(1,n-1)]];h=N1'; c=[1 zeros(1,n-1)];d=0;
% for more details about this function
2 comentarios
M.Mohsin Siraj
el 1 de Ag. de 2012
Azzi Abdelmalek
el 1 de Ag. de 2012
Editada: Azzi Abdelmalek
el 1 de Ag. de 2012
you are right, the controllabilite is ok; but not the obs. the problem is numeric
Azzi Abdelmalek
el 1 de Ag. de 2012
Editada: Azzi Abdelmalek
el 1 de Ag. de 2012
%we now both that your system is observable and controllable , then the problem is numeric, i suggest that you multiply your denominator by 0.0001
D=D*0.0001
% after when you calculate your observator or controller, you have to take into account that your output signal is multiplied by (1/0.0001)
% i advise you also to use my function tfn2ss, i tried it and it works. it did'nt work with tf2ss (it just works for controllability)
3 comentarios
M.Mohsin Siraj
el 1 de Ag. de 2012
Azzi Abdelmalek
el 1 de Ag. de 2012
Editada: Azzi Abdelmalek
el 12 de Sept. de 2012
what I suggested is not to replace D with 0.0001 * D when you simulate your system. It's just to calculate your observator, once the calcus finished, you change just the loi of your observator or controller.
M.Mohsin Siraj
el 1 de Ag. de 2012
Categorías
Más información sobre Dynamic System Models en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!