Transfer function of higher order
이전 댓글 표시
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
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
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
2012년 8월 1일
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
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
M.Mohsin Siraj
2012년 8월 1일
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
2012년 8월 1일
카테고리
도움말 센터 및 File Exchange에서 Digital Filter Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!