Transfer function of higher order

5 vues (au cours des 30 derniers jours)
M.Mohsin Siraj
M.Mohsin Siraj le 1 Août 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 commentaire
Azzi Abdelmalek
Azzi Abdelmalek le 1 Août 2012
Modifié(e) : Azzi Abdelmalek le 1 Août 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.

Connectez-vous pour commenter.

Réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 1 Août 2012
Modifié(e) : Azzi Abdelmalek le 1 Août 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 commentaires
M.Mohsin Siraj
M.Mohsin Siraj le 1 Août 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 le 1 Août 2012
Modifié(e) : Azzi Abdelmalek le 1 Août 2012
you are right, the controllabilite is ok; but not the obs. the problem is numeric

Connectez-vous pour commenter.


Azzi Abdelmalek
Azzi Abdelmalek le 1 Août 2012
Modifié(e) : Azzi Abdelmalek le 1 Août 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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 1 Août 2012
Modifié(e) : Azzi Abdelmalek le 12 Sep 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 le 1 Août 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?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dynamic System Models dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by