ʵÑéÈýÀûÓÃMatlab·ÖÎöÄÜ¿ØÐÔºÍÄܹÛÐÔ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/2/27 12:58:42ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

ʵÑéÈýÀûÓÃMatlab·ÖÎöÄÜ¿ØÐÔºÍÄܹÛÐÔ

ʵÑéÄ¿µÄ£ºÊìÁ·ÕÆÎÕÀûÓÃMatlabÖÐÏà¹Øº¯Êý·ÖÎöϵͳÄÜ¿ØÄܹÛÐÔ¡¢ÇóÈ¡Á½ÖÖ±ê×¼ÐÍ¡¢ÏµÍ³µÄ½á¹¹·Ö½âµÄ·½·¨¡£ ʵÑéÄÚÈÝ£º

1¡¢ÄÜ¿ØÐÔÓëÄܹÛÐÔ·ÖÎöÖг£ÓõÄÓйØMatlabº¯ÊýÓУº Size(a,b) »ñÈ¡¾ØÕóµÄÐкÍÁеÄÊýÄ¿ Ctrb(a,b) ÇóȡϵͳÄÜ¿ØÐÔÅбð¾ØÕó Obsv(a,c) ÇóÈ¡ÄܹÛÐÔÅбð¾ØÕó Rank(t) ÇóÈ¡¾ØÕóµÄÖÈ Inv(t) Çó¾ØÕóµÄÄæ

[abar,bbar,cbar,t,k]=ctrbf(a,b,c) ¶Ôϵͳ°´ÄÜ¿ØÐԷֽ⣬tΪ±ä»»Õó£¬kΪ¸÷×ÓϵͳµÄÖÈ [abar,bbar,cbar,t,k]=obsvf(a,b,c) ¶Ôϵͳ°´ÄܹÛÐÔ·Ö½â 2¡¢ÀûÓÃMatlabÅж¨ÏµÍ³ÄÜ¿ØÐÔºÍÄܹÛÐÔ

ÇóÈ¡Åбð¾ØÕóµÄÖÈ£¬¶øÅбð¾ØÕó¿ÉÓÃÁ½ÖÖ·½·¨µÃµ½£º M=ctrb(a,b) »òÕß M=[b,a*b,a^2*b,¡­¡­] ½«ÏµÍ³±ä»»Îª¶Ô½ÇÏßÐÍ»òÕßÔ¼µ±±ê×¼ÐÍ£¬¸ù¾Ý½á¹ûÖ±½ÓÅжϡ£»¯Îª±ê×¼ÐÍ¿ÉÒÔʹÓõÚÒ»´ÎʵÑéÖнéÉܵÄss2ss¡¢canonµÈº¯Êý¡£ 3¡¢»¯ÎªÄܿرê×¼ÐͺÍÄܹ۱ê×¼ÐÍ È磺>> a=[1 0 1;0 1 0;1 0 0]; >> b=[0 1 1]'; >> c=[1 1 0]; >> m=ctrb(a,b) m =

0 1 1 1 1 1 1 0 1

>> n=length(a);tc1=eye(n);tc2=eye(n); >> tc1(:,1)=m(:,3) tc1 =

1 0 0 1 1 0 1 0 1 >> tc1(:,2)=m(:,2) tc1 =

1 1 0 1 1 0 1 0 1 >> tc1(:,3)=m(:,1) tc1 =

1 1 0 1 1 1 1 0 1

>> qc=rank(m) qc = 3

>> den=poly(a) den =

1.0000 -2.0000 0.0000 1.0000 >> tc2(2,1)=den(2) tc2 =

1 0 0 -2 1 0 0 0 1

>> tc2(3,2)=den(2);tc2(3,1)=den(3) tc2 =

1.0000 0 0 -2.0000 1.0000 0 0.0000 -2.0000 1.0000 >> tc3=tc1*tc2;tc4=inv(tc3); >> a1=tc4*a*tc3 a1 =

-0.0000 1.0000 0.0000 0.0000 0 1.0000 -1.0000 0.0000 2.0000 >> b1=tc4*b b1 =

0.0000 0 1.0000 >> c1=c*tc3 c1 =

-2.0000 0 1.0000

²ÎÕÕ¸ÃÀý£¬ÕÆÎÕÆäËû±ê×¼Ð͵ÄÇó½â°ì·¨¡£ 4¡¢ÏµÍ³µÄ½á¹¹·Ö½â

ÕÒµ½±ä»»¾ØÕó»òÕߣ¬ÀûÓÃÏßÐԱ任½øÐнṹ·Ö½â¡£ ÀûÓÃMatlabÖеĺ¯Êý½øÐзֽ⣺

[abar,bbar,cbar,t,k]=ctrbf(a,b,c) ¶Ôϵͳ°´ÄÜ¿ØÐԷֽ⣬tΪ±ä»»Õó£¬kΪ¸÷×ÓϵͳµÄÖÈ [abar,bbar,cbar,t,k]=obsvf(a,b,c) ¶Ôϵͳ°´ÄܹÛÐÔ·Ö½â

ÀûÓÃ[num,den]=ss2tf(a,b,c,d,i)¿ÉÒÔÑéÖ¤ÄÜ¿ØÄܹÛ×ÓϵͳµÄ´«µÝº¯ÊýÕóµÈÓÚԭϵͳµÄ´«µÝº¯ÊýÕó¡£

5¡¢´«µÝº¯ÊýÕóµÄ×îСʵÏÖ

¶ÔÓÚ¶àÊäÈë-¶àÊä³öϵͳ£¬ÓÉtf2ss»òÕßzp2ssÖ±½ÓµÃµ½µÄϵͳʵÏÖ¾­³£²»ÊÇÒ»¸ö×îСʵÏÖ£¬ÀûÓÃminrealº¯Êý¿ÉÒÔÈ¥µô²»ÄܿػòÕß²»Äܹ۵Ä״̬£¬µÃµ½Ò»¸ö×îСʵÏÖ¡£ >> num={[4 6],[2 3];-2 -1} num =

[1x2 double] [1x2 double]

[ -2] [ -1] >> den={[1 3 2],[1 3 2];[1 3 2],[1 3 2]} den =

[1x3 double] [1x3 double] [1x3 double] [1x3 double] >> g=tf(num,den)

Transfer function from input 1 to output... 4 s + 6 #1: ------------- s^2 + 3 s + 2 -2 #2: ------------- s^2 + 3 s + 2

Transfer function from input 2 to output... 2 s + 3 #1: ------------- s^2 + 3 s + 2 -1 #2: ------------- s^2 + 3 s + 2 >> gs=ss(g) a =

x1 x2 x3 x4 x1 -3 -1 0 0 x2 2 0 0 0 x3 0 0 -3 -1 x4 0 0 2 0 b =

u1 u2 x1 4 0 x2 0 0 x3 0 2 x4 0 0 c =

x1 x2 x3 x4 y1 1 0.75 1 0.75 y2 0 -0.25 0 -0.25 d =

u1 u2 y1 0 0 y2 0 0

Continuous-time model. >> gm=minreal(gs) 2 states removed.