µ±Ç°Î»ÖãºÊ×Ò³ > ÐźÅÓëϵͳMATLABʵÑ飨½Ìʦ°æ£©
ʽÖУ¬bºÍa·Ö±ðΪϵͳº¯ÊýH£¨s£©µÄ·Ö×ӺͷÖĸ¶àÏîʽµÄϵÊýÏòÁ¿¡£
£¨j?£©Èç¹ûÒÑ֪ϵͳº¯ÊýH£¨s£©£¬ÇóϵͳµÄµ¥Î»³å¼¤ÏìÓ¦h(t)ºÍƵÂÊÏìÓ¦H¿ÉÒÔÓÃÒÔǰ½éÉܹýµÄimpulseºÍfreqsº¯Êý¡£ Àý6-2 ÒÑ֪ϵͳº¯ÊýΪ H(s)=1 32s?2s?2s?1£¨j?£©ÊÔ»³öÆäÁ㼫µã·Ö²¼Í¼£¬ÇóϵͳµÄµ¥Î»³å¼¤ÏìÓ¦h(t)ºÍƵÂÊÏìÓ¦H£¬²¢ÅжÏϵͳ
ÊÇ·ñÎȶ¨¡£
½â£ºÆäMATLAB³ÌÐòÈçÏ£º num=[1]; den=[1,2,2,1]; sys=tf(num,den); figure(1);pzmap(sys); t=0:0.02:10;
h=impulse(num,den,t); figure(2);plot(t,h)
title('Impulse Response') [H,w]=freqs(num,den); figure(3);plot(w,abs(H)) xlabel('\\omega')
title('Magnitude Response')
3£®ÓÃMATLAB½øÐÐLaplaceÕý¡¢·´±ä»»
MATLABµÄ·ûºÅÊýѧ¹¤¾ßÏäÌṩÁ˼ÆËãLaplaceÕý¡¢·´±ä»»µÄº¯ÊýLaplaceºÍilaplace,Æäµ÷ÓøñʽΪ
F?laplace(f)
f?ilaplace(F)ÉÏÊöÁ½Ê½ÓҶ˵ÄfºÍF·Ö±ðΪʱÓò±íʾʽºÍsÓò±íʾʽµÄ·ûºÅ±íʾ£¬¿ÉÒÔÓ¦Óú¯ÊýsymʵÏÖ£¬Æäµ÷ÓøñʽΪ
S=sym(A)
ʽÖУ¬AΪ´ý·ÖÎö±íʾʽµÄ×Ö·û´®£¬SΪ·ûºÅÊý×Ö»ò±äÁ¿¡£ Àý6-3 ÊÔ·Ö±ðÓÃLaplaceºÍilaplaceº¯ÊýÇó £¨1£©f(t)?esin(at)u(t)µÄLaplace±ä»»£»
?ts2£¨2£©F(s)?2µÄLaplace·´±ä»»¡£
s?1½â£º£¨1£©Æä³ÌÐòΪ f=sym('exp(-t)*sin(a*t)'); F=laplace(f) »ò
syms a t
F=laplace(exp(-t)*sin(a*t)) £¨2£©Æä³ÌÐòΪ
25
F=sym('s^2/(s^2+1)'); ft=ilaplace(F) »ò syms s
ft= ilaplace(s^2/(s^2+1)) 4£®ÀëɢϵͳÁ㼫µãͼ
Àëɢϵͳ¿ÉÒÔÓÃÏÂÊö²î·Ö·½³ÌÃèÊö£º
?ay(k?i)??bii?0m?0NMmf(k?m)
Y(z)b0?b1z?1?...?bMz?MZ±ä»»ºó¿ÉµÃϵͳº¯Êý£ºH(z)? ?F(z)a0?a1z?1?...?aNz?NÓÃMATLABÌṩµÄrootº¯Êý¿É·Ö±ðÇóÁãµãºÍ¼«µã£¬µ÷ÓøñʽÊÇ
p=[a0,a1¡an],q=[b0,b1¡bm,0,0¡0], ²¹0ʹ¶þÕßάÊýÒ»Ñù¡£»Á㼫µãͼµÄ·½·¨ÓжàÖÖ£¬¿ÉÒÔÓÃMATLABº¯Êý[z,p,k]=tf2zp(b,a)ºÍzplane(q,p)£¬Ò²¿ÉÓÃplotÃüÁî×Ô±àÒ»º¯Êýljdt.m,»Í¼Ê±µ÷Óá£
function ljdt(A,B)
% The function to draw the pole-zero diagram for discrete system
p=roots(A)£» %Çóϵͳ¼«µã q=roots(B)£» %ÇóϵͳÁãµã p=p'£» %½«¼«µãÁÐÏòÁ¿×ªÖÃΪÐÐÏòÁ¿ q=q'£» %½«ÁãµãÁÐÏòÁ¿×ªÖÃΪÐÐÏòÁ¿ x=max(abs([p q 1]))£» %È·¶¨×Ý×ø±ê·¶Î§ x=x+0.1£» y=x£» %È·¶¨ºá×ø±ê·¶Î§ clf hold on
axis([-x x -y y]) %È·¶¨×ø±êÖáÏÔʾ·¶Î§ w=0:pi/300:2*pi£» t=exp(i*w)£» plot(t) %»µ¥Î»Ô° axis('square') plot([-x x],[0 0]) %»ºá×ø±êÖá plot([0 0],[-y y]) %»×Ý×ø±êÖá text(0.1,x,'jIm[z]') text(y,1/10,'Re[z]')
plot(real(p),imag(p),'x') %»¼«µã plot(real(q),imag(q),'o') %»Áãµã title('pole-zero diagram for discrete system') %±ê×¢±êÌâ hold off
Àý6-4 Çóϵͳº¯ÊýÁ㼫µãͼH(z)?
a=[3 -1 0 0 0 1];
26
z?1 543z?z?1
b=[1 1]; ljdt(a,b) p=roots(a) q=roots(b) pa=abs(p)
5£®ÀëɢϵͳµÄƵÂÊÌØÐÔ
ÀëɢϵͳµÄƵÂÊÌØÐÔ¿ÉÓÉϵͳº¯ÊýÇó³ö£¬¼ÈÁîz?ej?,MATLABº¯Êýfreqz¿É¼ÆËãÆµÂÊ
ÌØÐÔ£¬µ÷ÓøñʽÊÇ£º
[H£¬W]=freqz(b,a,n)£¬bºÍaÊÇϵͳº¯Êý·Ö×Ó·ÖĸϵÊý£¬nÊÇ0-?·¶Î§ n¸öµÈ·Ýµã£¬Ä¬ÈÏ
Öµ512£¬HÊÇÆµÂÊÏìÓ¦º¯ÊýÖµ£¬WÊÇÏàӦƵÂʵ㣻
[H£¬W]=freqz(b,a,n,¡¯whole¡¯), nÊÇ0-2?·¶Î§ n¸öµÈ·Ýµã£» freqz(b,a,n)£¬Ö±½Ó»ÆµÂÊÏìÓ¦·ùƵºÍÏàÆµÇúÏߣ»
Àý6-5 ϵͳº¯ÊýH(z)?z?0.5
ÔËÐÐÈçÏÂÓï¾ä£¬¿ÉµÃ10¸öƵÂʵãµÄ¼ÆËã½á¹û A=[1 0]; B=[1 -0.5];
[H,W]=freqz(B,A,10)
¼ÌÐøÔËÐÐÈçÏÂÓï¾ä£¬¿É½«400¸öƵÂʵãµÄ¼ÆËã½á¹ûÓÃplotÓï¾ä»·ùƵºÍÏàÆµÇúÏß B=[1 -0.5]; A =[1 0];
[H,w]=freqz(B,A,400,'whole'); Hf=abs(H); Hx=angle(H); clf
figure(1) plot(w,Hf)
title('Àëɢϵͳ·ùÆµÌØÐÔÇúÏß') figure(2) plot(w,Hx)
title('ÀëɢϵͳÏàÆµÌØÐÔÇúÏß')
»¹¿ÉÓÃfreqzÓï¾äÖ±½Ó»Í¼£¬×¢ÒâÇø±ð A=[1 0]; B=[1 -0.5]; freqz(B,A,400)
Àý6-6 Óü¸ºÎʸÁ¿·¨£¬×Ô±à³ÌÐò»ÆµÂÊÏìÓ¦
zÔÀí£ºÆµÂÊÏìÓ¦H(ej??(e??qjMj))?j?1N?(e??p)jii?1
27
±à³ÌÁ÷³Ì£º¶¨ÒåZÆ½Ãæµ¥Î»Ô²ÉÏk¸öƵÂʵȷֵ㣻Çó³öϵͳº¯ÊýËùÓÐÁãµãºÍ¼«µãµ½ÕâЩµÈ·ÖµãµÄ¾àÀ룻Çó³öϵͳº¯ÊýËùÓÐÁãµãºÍ¼«µãµ½ÕâЩµÈ·ÖµãµÄʸÁ¿µÄÏà½Ç£»Çó³öµ¥Î»Ô²Éϸ÷ ƵÂʵȷֵãµÄ
H(ej?)ºÍ?(?)»Ö¸¶¨·¶Î§ÄڵķùƵÓëÏàÆµ¡£ÈôÒª»Á㼫µãͼ£¬¿Éµ÷ÓÃljdt.mº¯Êý¡£ function dplxy(k,r,A,B)
%The function to draw the frequency response of discrete system p=roots(A); %Ç󼫵ã q=roots(B); %ÇóÁãµã figure(1) ljdt(A,B) %»Á㼫µãͼ w=0:l*pi/k:r*pi; y=exp(i*w); %¶¨Ò嵥λԲÉϵÄk¸öƵÂʵȷֵã N=length(p); %Ç󼫵ã¸öÊý M=length(q); %ÇóÁãµã¸öÊý yp=ones(N,1)*y; %¶¨ÒåÐÐÊýΪ¼«µã¸öÊýµÄµ¥Î»Ô²ÏòÁ¿ yq=ones(M,1)*y; %¶¨ÒåÐÐÊýΪÁãµã¸öÊýµÄµ¥Î»Ô²ÏòÁ¿ vp=yp-p*ones(1,r*k+1); %¶¨Ò弫µãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿ vq=yq-q*ones(1,r*k+1); %¶¨ÒåÁãµãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿ Ai=abs(vp); %Çó³ö¼«µãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿µÄÄ£ Bj=abs(vq); %Çó³öÁãµãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿µÄÄ£ Ci=angle(vp); %Çó³ö¼«µãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿µÄÏà½Ç Dj=angle(vq); %Çó³öÁãµãµ½µ¥Î»Ô²Éϸ÷µãµÄÏòÁ¿µÄÏà½Ç fai=sum(Dj,1)-sum(Ci,1); %ÇóϵͳÏàÆµÏìÓ¦ H=prod(Bj,1)./prod(Ai,1); %Çóϵͳ·ùƵÏìÓ¦ figure(2) plot(w,H); %»æÖÆ·ùÆµÌØÐÔÇúÏß title('Àëɢϵͳ·ùÆµÌØÐÔÇúÏß') xlabel('½ÇƵÂÊ') ylabel('·ù¶È') figure(3) plot(w,fai) title('ÀëɢϵͳµÄÏàÆµÌØÐÔÇúÏß') xlabel('½ÇƵÂÊ') ylabel('Ïàλ')
5/4(1?z?1)ÒÑ֪ϵͳº¯ÊýH(z)?£¬»ÆµÂÊÏìÓ¦ºÍÁ㼫µãͼ¡£ ?11?1/4zA=[1 -1/4]; B=[5/4 -5/4];
dplxy(500,2,A,B) %»æÖÆÏµÍ³2¦ÐƵÂÊ·¶Î§ÄÚ500¸öƵÂʵãµÄ·ùƵºÍÏàÆµÌØÐÔÇúÏß
¼°Á㼫µãͼ
28
Èý¡¢ÉÏ»úʵÑéÄÚÈÝ
1£®Ñé֤ʵÑéÔÀíÖÐËùÊöµÄÏà¹Ø³ÌÐò£» 2£®ÇóÐźÅf(t)?te?3tu(t)µÄÀÆÕÀ˹±ä»»
s3?5s2?9s?73£®Çóº¯ÊýF(s)?µÄ·´±ä»» 2s?3s?24£®ÒÑÖªÁ¬ÐøÏµÍ³µÄϵͳº¯ÊýÈçÏ£¬ÊÔÓÃMATLAB»æÖÆÏµÍ³µÄÁ㼫µãͼ£¬²¢¸ù¾ÝÁ㼫µãͼÅжÏϵͳµÄÎȶ¨ÐÔ
s2?s?2 H(s)=3 23s?5s?4s?6
5£®ÏµÍ³º¯ÊýÊÇ
1?5z?5z
?1?2?z?3
ÇóƵÂÊÏìÓ¦¡£
29
¹²·ÖÏí92ƪÏà¹ØÎĵµ