Transfer function of higher order

3 visualizaciones (últimos 30 días)
M.Mohsin Siraj
M.Mohsin Siraj el 1 de Ag. de 2012
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
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.

Iniciar sesión para comentar.

Respuestas (2)

Azzi Abdelmalek
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
M.Mohsin Siraj el 1 de Ag. de 2012
Thanks for your answer. But still the state-space realization is not minimal. The observablity matrix loses rank. Which i couldn't understand why.
Azzi Abdelmalek
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

Iniciar sesión para comentar.


Azzi Abdelmalek
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
Azzi Abdelmalek
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
M.Mohsin Siraj el 1 de Ag. de 2012
Thanks, i got your point. But i am not designing an observer here... I want to have a balanced realization of a stable transfer function. Is such kind of problems very common in MATLAB? I mean i haven't worked on higher order systems. So for example, above 30 or 40 order does it start making problems?

Iniciar sesión para comentar.

Categorías

Más información sobre Dynamic System Models en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by