Transfer function of higher order

조회 수: 2 (최근 30일)
M.Mohsin Siraj
M.Mohsin Siraj 2012년 8월 1일
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
Azzi Abdelmalek
Azzi Abdelmalek 2012년 8월 1일
편집: Azzi Abdelmalek 2012년 8월 1일
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.

댓글을 달려면 로그인하십시오.

답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2012년 8월 1일
편집: Azzi Abdelmalek 2012년 8월 1일
% 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
M.Mohsin Siraj
M.Mohsin Siraj 2012년 8월 1일
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 2012년 8월 1일
편집: Azzi Abdelmalek 2012년 8월 1일
you are right, the controllabilite is ok; but not the obs. the problem is numeric

댓글을 달려면 로그인하십시오.


Azzi Abdelmalek
Azzi Abdelmalek 2012년 8월 1일
편집: Azzi Abdelmalek 2012년 8월 1일
%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
Azzi Abdelmalek
Azzi Abdelmalek 2012년 8월 1일
편집: Azzi Abdelmalek 2012년 9월 12일
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 2012년 8월 1일
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?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Dynamic System Models에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by