DSPʵÑ鱨¸æB13011025 ÏÂÔر¾ÎÄ

ÄϾ©Óʵç´óѧ

ʵ Ñé ±¨ ¸æ

ʵÑéÃû³Æ£ºÀëɢʱ¼äÐźÅÓëϵͳµÄʱ¡¢ÆµÓò±íʾ

ÀëÉ¢¸µÁ¢Ò¶±ä»»ºÍz±ä»»

Êý×ÖÂ˲¨Æ÷µÄƵÓò·ÖÎöºÍʵÏÖ

Êý×ÖÂ˲¨Æ÷µÄÉè¼Æ

¿Î³ÌÃû³Æ Êý×ÖÐźŴ¦ÀíA(Ë«Óï)

°à¼¶Ñ§ºÅ B13011025

ÐÕ Ãû ³ÂÖ¾ºÀ

¿ª¿Îʱ¼ä 2015/2016ѧÄ꣬µÚ1ѧÆÚ

ʵÑéÃû³Æ£ºÀëɢʱ¼äÐźÅÓëϵͳµÄʱ¡¢ÆµÓò±íʾ

ʵÑéÄ¿µÄºÍÈÎÎñ£º

ÊìϤMatlab»ù±¾ÃüÁÀí½âºÍÕÆÎÕÀëɢʱ¼äÐźÅÓëϵͳµÄʱ¡¢ÆµÓò±íʾ¼°¼òµ¥Ó¦Óá£ÔÚMatlab»·¾³ÖУ¬°´ÕÕÒªÇó²úÉúÐòÁУ¬¶ÔÐòÁнøÐлù±¾ÔËË㣻¶Ô¼òµ¥Àëɢʱ¼äϵͳ½øÐзÂÕ棬¼ÆËãÏßÐÔʱ²»±ä£¨LTI£©ÏµÍ³µÄ³å¼¤ÏìÓ¦ºÍ¾í»ýÊä³ö£»¼ÆËãºÍ¹Û²ìÐòÁеÄÀëɢʱ¼ä¸µÁ¢Ò¶±ä»»£¨DTFT£©·ù¶ÈÆ׺ÍÏàλÆס£ ʵÑéÄÚÈÝ£º

»ù±¾ÐòÁвúÉúºÍÔËË㣺 Q1.1¡«1.3£¬Q1.23£¬Q1.30¡«1.33 Àëɢʱ¼äϵͳ·ÂÕ棺 Q2.1¡«2.3 LTIϵͳ£ºQ2.19£¬Q2.21£¬Q2.28 DTFT£ºQ3.1£¬Q3.2£¬Q3.4 ʵÑé¹ý³ÌÓë½á¹û·ÖÎö£º

Q1.1ÔËÐгÌÐòP1.1£¬ÒÔ²úÉúµ¥Î»Ñù±¾ÐòÁÐu[n]²¢ÏÔʾËü¡£ clf;

n = -10:20;

u = [zeros(1,10) 1 zeros(1,20)]; stem(n,u);

xlabel('Time index n'); ylabel('Amplitude');

title('Unit Sample Sequence'); axis([-10 20 0 1.2]);

Q1.2 ÃüÁîclf£¬axis£¬title£¬xlabelºÍylabel ÃüÁîµÄ×÷ÓÃÊÇʲô£¿ ´ð£ºclfÃüÁîµÄ×÷ÓãºÇå³ýͼÐδ°¿ÚÉϵÄͼÐΣ» axisÃüÁîµÄ×÷ÓãºÉèÖÃ×ø±êÖáµÄ·¶Î§ºÍÏÔʾ·½Ê½£» titleÃüÁîµÄ×÷Ó㺸øµ±Ç°Í¼Æ¬ÃüÃû£» xlabelÃüÁîµÄ×÷ÓãºÌí¼Óx×ø±ê±ê×¢£» ylabel cÃüÁîµÄ×÷ÓãºÌí¼Óy×ø±ê±ê×¢£»

Q1.3Ð޸ijÌÐòP1.1£¬ÒÔ²úÉú´øÓÐÑÓʱ11¸öÑù±¾µÄÑÓ³Ùµ¥Î»Ñù±¾ÐòÁÐud[n]¡£ÔËÐÐÐ޸ĵijÌÐò²¢ÏÔʾ²úÉúµÄÐòÁС£ clf;

n = -10:20;

u = [zeros(1,21) 1 zeros(1,9)]; stem(n,u);

xlabel('Time index n'); ylabel('Amplitude');

title('Unit Sample Sequence'); axis([-10 20 0 1.2]);

Q1.23ÐÞ¸ÄÉÏÊö³ÌÐò£¬ÒÔ²úÉú³¤¶ÈΪ50¡¢ÆµÂÊΪ0.08¡¢Õñ·ùΪ2.5¡¢ÏàÒÆΪ90¶ÈµÄÒ»¸öÕýÏÒÐòÁв¢ÏÔʾËü¡£¸ÃÐòÁеÄÖÜÆÚÊǶàÉÙ£¿ n = 0:50;

f = 0.08;

phase = 90; A = 2.5; arg = 2*pi*f*n - phase; x = A*cos(arg); clf; stem(n,x); axis([0 50 -3 3]); grid;

title('Sinusoidal Sequence'); xlabel('Time index n'); ylabel('Amplitude'); axis;

´ð£ºÖÜÆÚΪ£ºT=

2??=

11==22.5¡£ f0.08Q1.30δÎÛȾµÄÐźÅs[n]ÊÇʲôÑùµÄÐÎʽ£¿¼ÓÐÔÔëÉùd[n]ÊÇʲôÑùµÄÐÎʽ£¿ ´ð£ºÎ´ÎÛȾµÄÐźţºs[n]=2¡Á0.9¡£

¼ÓÐÔÔëÉùd[n]ÊǾùÔÈ·Ö²¼ÔÚ-04µ½+0.4Ö®¼äµÄËæ»úÐòÁС£

Q1.31ʹÓÃÓï¾äx=s+dÄܲúÉú±»ÔëÉùÎÛȾµÄÐźÅÂð£¿Èô²»ÄÜ£¬ÎªÊ²Ã´£¿ ´ð£º²»ÄÜ£¬ÒòΪdÊÇÁÐÏòÁ¿£¬sÊÇÐÐÏòÁ¿¡£

Q1.32ÐźÅx1£¬x2ºÍx3ÓëÐźÅxÖ®¼äµÄ¹ØϵÊÇʲô£¿

´ð£ºX1ÊÇxµÄÑÓʱһ¸öµ¥Î»£¬x2ºÍxÏàµÈ£¬x3³¬Ç°ÓÚxÒ»¸öµ¥Î»¡£

nnQ1.33legendÃüÁîµÄ×÷ÓÃÊÇʲô£¿ ´ð£º²úÉúͼÀý˵Ã÷¡£

Q2.1¶ÔM = 2 £¬ÔËÐÐÉÏÊö³ÌÐò£¬Éú³ÉÊäÈë x[n] = s1[n]+s2[n]µÄÊä³öÐźš£Êä³öx[n]µÄÄĸö·ÖÁ¿±»¸ÃÀëɢʱ¼äϵͳÒÖÖÆ£¿

´ð£ºÊäÈë x[n] ±»¸ÃÀëɢʱ¼äϵͳÒÖÖƵķÖÁ¿ÎªSignal2µÄ¸ßƵ·ÖÁ¿¡£

Q2.2ÈôÏßÐÔʱ²»±äϵͳÓÉy[n] = 0.5(x[n]+x[n¨C1])±ä³Éy[n] = 0.5(x[n]¨Cx[n¨C1])£¬ÊäÈë x[n] = s1[n]+s2[n]µÄÓ°ÏìÊÇʲô£¿ n = 0:100;

s1 = cos(2*pi*0.05*n);

s2 = cos(2*pi*0.47*n); x = s1+s2;

M = input('Desired length of the filter = '); num = (-1).^[0:M-1]; y = filter(num,1,x)/M; clf;

subplot(2,2,1); plot(n, s1);

axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Signal #1'); subplot(2,2,2); plot(n, s2);

¶Ô axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Signal #2'); subplot(2,2,3); plot(n, x);

axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude'); title('Input Signal'); subplot(2,2,4); plot(n, y);

axis([0, 100, -2, 2]); xlabel('Time index n'); ylabel('Amplitude');

title('Output Signal'); axis;

´ð£º¶ÔÓÚÊäÈëµÄÓ°ÏìÊÇ- ¸ÃϵͳÊÇÒ»¸ö¸ßͨÂ˲¨Æ÷£¬Ëüͨ¹ý¸ßƵÂʵÄÊäÈë·ÖÁ¿S2£¬¶ø²»ÊǵÍƵµÄÊäÈë·ÖÁ¿S1¡£

Q2.3¶ÔÂ˲¨Æ÷³¤¶ÈMºÍÕýÏÒÐźÅs1[n]ºÍs2[n]µÄƵÂÊÈ¡ÆäËûÖµ£¬ÔËÐгÌÐòP2.1£¬Ëã³ö½á¹û¡£

M=3£¬f1=0.1£¬f2=0.2

M=8£¬f1=0.25£¬f2=0.5

Q2.19ÔËÐÐ P2_5£¬Éú³Éʽ£¨2.15£©Ëù¸øÀëɢʱ¼äϵͳµÄ³å¼¤ÏìÓ¦¡£

Q2.21ÀûÓÃfilterÃüÁî±àдһ¸öMATLAB³ÌÐò£¬Éú³Éʽ£¨2.17£©¸ø³öµÄÒò¹ûÏßÐÔʱ²»±äϵͳµÄ³å¼¤ÏìÓ¦£¬¼ÆËã²¢»­³öÇ°40¸öÑù±¾¡£°ÑÄãµÄ½á¹ûºÍÏ°ÌâQ2.20Öеõ½µÄ½á¹ûÏà±È½Ï¡£ clf; N = 40;

num = [0.9 -0.45 0.35 0.002]; den = [1.0 0.71 -0.46 -0.62]; x = [1 zeros(1,N-1)]; y = filter(num,den,x); stem(y);

xlabel('Time index n'); ylabel('Amplitude');

title('Impulse Response'); grid;

³ÌÐò²úÉúµÄ40¸öÑù±¾ÈçÏÂËùʾ:

Q2.28ÔËÐгÌÐòP2.7£¬¶ÔÐòÁÐh[n]ºÍx[n]Çó¾í»ý£¬Éú³Éy[n]£¬²¢ÓÃFIRÂ˲¨Æ÷h[n]¶ÔÊäÈëx[n]Â˲¨£¬ÇóµÃy1[n]¡£y[n]ºÍy1[n]Óвî±ðÂð£¿ÎªÊ²Ã´ÒªÊ¹ÓöÔx[n]²¹ÁãºóµÃµ½µÄx1[n]×÷ΪÊäÈëÀ´²úÉúy1[n]£¿

´ð£ºy[n] ºÍ y1[n] µÄ²î±ðΪ - ûÓвî±ð

½«x[n]²¹ÁãºóµÃµ½ x1[n]×÷ΪÊäÈë,²úÉúy1[n]µÄÔ­ÒòÊÇ ¨C ¶ÔÓÚ³¤¶ÈN1ºÍN2µÄÁ½¸öÐòÁУ¬×ª»¯ÂÊ·µ»ØµÃµ½µÄÐòÁ㤶ÈN1+N2-1¡£Óë´ËÏà·´£¬Â˲¨Æ÷½ÓÊÕÒ»¸öÊäÈëÐźźÍϵͳ¹æ·¶£¬·µ»ØµÄ½á¹ûÊÇÏàͬµÄ³¤¶È×÷ΪÊäÈëÐźš£Òò´Ë£¬ÎªÁË´Óת»¯ÂʺÍÂ˲¨Æ÷µÃµ½Ö±½Ó±È½ÏµÄ½á¹û£¬ÓбØÒª¹©Ó¦Â˲¨Æ÷µÄÊäÈëÒѾ­Ìî³äΪ³¤¶ÈL(x)+L(h)-1¡£

Q3.1ÔÚ³ÌÐòP3.1ÖУ¬¼ÆËãÀëɢʱ¼ä¸µÀïÒ¶±ä»»µÄԭʼÐòÁÐÊÇʲô£¿MATLABÃüÁîpauseµÄ×÷ÓÃÊÇʲô£¿

2?z?1´ð£ºÀëɢʱ¼ä¸µÀïÒ¶±ä»»µÄԭʼÐòÁУº£» ?11?0.6zpause ÃüÁîµÄ×÷ÓãºÔÝÍ£³ÌÐò£¬Ö±ÖÁÓû§°´ÈÎÒâ¼ü£¬³ÌÐò²Å¿ÉÒÔ¿ªÊ¼¡£

Q3.2ÔËÐгÌÐò P3.1£¬ÇóÀëɢʱ¼ä¸µÀïÒ¶±ä»»µÄʵ²¿¡¢Ð鲿ÒÔ¼°·ù¶ÈºÍÏàλÆס£Àëɢʱ¼ä¸µÀïÒ¶±ä»»ÊÇ?µÄÖÜÆÚº¯ÊýÂð£¿ÈôÊÇ£¬ÖÜÆÚÊǶàÉÙ£¿ÃèÊöÕâËĸöͼ±íʾµÄ¶Ô³ÆÐÔ¡£

´ð£ºDTFT ÊǹØÓÚ ?µÄÖÜÆÚº¯Êýô£¿ÊÇÖÜÆÚº¯Êý ÖÜÆÚÊÇ - 2¦Ð

ËĸöͼÐεĶԳÆÐÔΪ£ºÊµ²¿ÊÇż¶Ô³Æ£¬Ð鲿ÊÇÆæ¶Ô³Æ£¬·ù¶ÈÆ×ÊÇż¶Ô³ÆÏàλÆ×ÊÇÆæ¶Ô³Æ¡£ Q3.4Ð޸ijÌÐò P3_1 ÖØ×öQ3.2µÄ³ÌÐòÈçÏÂ: clf;

w = -4*pi:8*pi/511:4*pi;

num = [1 3 5 7 9 11 13 15 17];den = [1]; h = freqz(num, den, w); subplot(2,1,1)

plot(w/pi,real(h));grid

title('Real part of H(e^{j\\omega})') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,imag(h));grid

title('Imaginary part of H(e^{j\\omega})') xlabel('\\omega /\\pi'); ylabel('Amplitude'); pause

subplot(2,1,1)

plot(w/pi,abs(h));grid

title('Magnitude Spectrum |H(e^{j\\omega})|') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,angle(h));grid

title('Phase Spectrum arg[H(e^{j\\omega})]') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); Ð޸ijÌÐòºóµÄÔËÐнá¹ûΪ:

´ð£ºDTFT ÊǹØÓÚ ?µÄÖÜÆÚº¯Êýô£¿ÊÇÖÜÆÚº¯Êý ÖÜÆÚÊÇ - 2¦Ð

ÏàλÆ×ÖÐÌø±äµÄÔ­ÒòÊÇ - ¶ÔÏàλ½øÐйéÒ»»¯¡£

ʵÑéÃû³Æ£ºÀëÉ¢¸µÁ¢Ò¶±ä»»ºÍz±ä»»

ʵÑéÄ¿µÄºÍÈÎÎñ£º

ÕÆÎÕÀëÉ¢¸µÁ¢Ò¶±ä»»£¨DFT£©¼°Äæ±ä»»£¨IDFT£©¡¢z±ä»»¼°Äæ±ä»»µÄ¼ÆËãºÍ·ÖÎö¡£ÀûÓÃMatlabÓïÑÔ£¬Íê³ÉDFTºÍIDFTµÄ¼ÆËã¼°³£ÓÃÐÔÖʵÄÑéÖ¤£¬ÓÃDFTʵÏÖÏßÐÔ¾í»ý£¬ÊµÏÖz±ä»»µÄÁ㼫µã·ÖÎö£¬ÇóÓÐÀíÄæz±ä»»¡£ ʵÑéÄÚÈÝ£º

DFTºÍIDFT¼ÆË㣺 Q3.23¡«3.24

DFTµÄÐÔÖÊ£º Q3.26~3.29£¬Q3.36£¬Q3.38£¬Q3.40 z±ä»»·ÖÎö£ºQ3.46¡«3.48 Äæz±ä»»£ºQ3.50

ʵÑé¹ý³ÌÓë½á¹û·ÖÎö£º?²Î¼ûʵÑéÒ»¸ñʽ?

Q3.23±àдһ¸öMATLAB³ÌÐò£¬¼ÆËã²¢»­³ö³¤¶ÈΪNµÄLµãÀëÉ¢¸µÀïÒ¶±ä»»X[k]µÄÖµ£¬ ÆäÖÐL¡ÝN£¬È»ºó¼ÆËã²¢»­³öLµãÀëÉ¢¸µÀïÒ¶Äæ±ä»»X[k]¡£¶Ô²»Í¬³¤¶ÈNºÍ²»Í¬µÄÀëÉ¢¸µÀïÒ¶±ä»»³¤¶ÈL£¬ÔËÐгÌÐò¡£ÌÖÂÛÄãµÄ½á¹û¡£

clf; N=200; L=256; nn=[0:N-1];

kk=[0:L-1];

xR=[0.1*(1:100) zeros(1,N-100)]; xI=[zeros(1,N)]; x=xR+i*xI; XF=fft(x,L); subplot(3,2,1); grid; plot(nn,xR); grid;

title('Re\\{x[n]\\}'); xlabel('Time index n'); ylabel('Amplitude'); subplot(3,2,2); plot(nn,xI); grid;

title('Im\\{x[n]\\}'); xlabel('Time index n'); ylabel('Amplitude'); subplot(3,2,3); plot(kk,real(XF)); grid;

title('Re\\{x[n]\\}'); xlabel('Frequency index k'); ylabel('Amplitude'); subplot(3,2,4); plot(kk,imag(XF)); grid;

title('Im\\{x[n]\\}'); xlabel('Frequency index k'); ylabel('Amplitude'); xx=ifft(XF,L); subplot(3,2,5); plot(kk,real(xx)); grid;

title('Real part of IDFT\\{x[n]\\}'); xlabel('Time index n'); ylabel('Amplitude'); subplot(3,2,6); plot(kk,imag(xx)); grid;

title('Imag part of IDFT\\{x[n]\\}'); xlabel('Time index n'); ylabel('Amplitude');

Q3.26ÔÚº¯ÊýcircshiftÖУ¬ÃüÁîremµÄ×÷ÓÃÊÇʲô£¿ ´ð£ºRem(x,y)ÊÇÓÃy¶ÔxÇóÓàÊýº¯Êý¡£

Q3.27 ½âÊͺ¯ÊýcircshiftÔõÑùʵÏÖÔ²ÖÜÒÆλÔËËã¡£

´ð£ºÔÚÊäÈëÐòÁÐxÓÉMµÄλÖÿªÊ¼±»Ñ­»·ÒÆ룬Èç¹ûM>0£¬Ôòcirclshiftɾ³ý´ÓʸÁ¿x×î×ó±ß¿ªÊ¼µÄM¸öÔªËغÍËüÃǸ½¼ÓÔÚÓÒ²àµÄÊ£ÓàÔªËØ£¬ÒÔ»ñµÃÑ­»·ÒÆλÐòÁС£Èç¹ûM<0£¬ÔòcirclshiftÊ×ÏÈͨ¹ýxµÄ³¤¶ÈÀ´ÃÖ²¹M£¬¼´ÐòÁÐx×îÓұߵij¤¶ÈµÄMÑù±¾´ÓxÖÐɾ³ýºÍ¸½¼ÓÔÚÆäÓàµÄM¸öÑù±¾µÄÓҲ࣬ÒÔ»ñµÃÑ­»·ÒÆλÐòÁС£ Q3.28ÔÚº¯ÊýcirconvÖУ¬ÔËËã·û~=µÄ×÷ÓÃÊÇʲô£¿ ´ð£º¡°~=¡±±íʾ²»µÈÓÚ¡£

Q3.29½âÊͺ¯ÊýcirconvÔõÑùʵÏÖÔ²Öܾí»ýÔËËã¡£

´ð£ºÊäÈëʱÁ½¸ö³¤¶È¶¼ÎªLµÄÏòÁ¿x1ºÍx2£¬ËüÊǷdz£ÓÐÓõĶ¨ÆÚÑÓ³¤X2µÄº¯Êý¡£ÈÃx2p³ÉΪx2ÑÓ³¤ÎÞÏÞ³¤µÄÖÜÆÚµÄÐòÁС£´Ó¸ÅÄîÉϽ²£¬ÔÚ¶¨µãʱ¼äÉÏͨ¹ýʱÐò½»»»ºóµÄx2pµÄ³¤¶ÈL½»»»x2pÐòÁкÍx2trµÈÓÚ1µÄÔªËØ¡£È»ºóÔªËØ1ÖÁLµÄÊä³öÏòÁ¿yÊÇͨ¹ýÈ¡x1ºÍ»ñµÃµÄ³¤¶ÈΪLµÄshʸÁ¿Ö®¼äµÄÄÚ»ýµÃµ½Í¨¹ýÑ­»·ÓÒÒƵÄʱ¼ä·´×ªÏòÁ¿x2tr¡£¶ÔÓÚÊä³öÑù±¾Y[n]µÄ1¡ÜN¡ÜLʱ£¬ÓÒÑ­»·ÒÆλµÄÁ¿Îªn-1¸öλÖÃÉÏ¡£

Q3.30ͨ¹ý¼ÓÈëºÏÊʵÄ×¢ÊÍÓï¾äºÍ³ÌÐòÓï¾ä£¬Ð޸ijÌÐòP3.7£¬¶Ô³ÌÐòÉú³ÉµÄͼÐÎÖеÄÁ½¸öÖá¼Ó±ê¼Ç¡£ÄÄÒ»¸ö²ÎÊý¾ö¶¨Ê±ÒÆÁ¿£¿ÈôʱÒÆÁ¿´óÓÚÐòÁг¤¶È£¬½«»á·¢Éúʲô£¿

function y = circshift(x,M) if abs(M) > length(x) M = rem(M,length(x)); end if M < 0

M = M + length(x); end

y = [x(M+1:length(x)) x(1:M)];

clf; M = 6;

a = [0 1 2 3 4 5 6 7 8 9]; b = circshift(a,M); L = length(a)-1; n = 0:L; subplot(2,1,1);

stem(n,a);axis([0,L,min(a),max(a)]); title('Original Sequence'); xlabel('time index k'); ylabel('a[n]'); subplot(2,1,2);

stem(n,b);axis([0,L,min(a),max(a)]);

title(['Sequence Obtained by Circularly Shifting by',num2str(M),'Samples']); xlabel('time index n'); ylabel('b[n]');

D¾ö¶¨Ê±ÒÆÁ¿£¬×óÒÆMλ¡£

Q3.31ÔËÐÐÐ޸ĺóµÄ³ÌÐò²¢ÑéÖ¤Ô²ÖÜʱÒÆÔËËã¡£ Ð޸ĺóµÄ³ÌÐòÈçÏ£º

Q3.32ͨ¹ý¼ÓÈëºÏÊʵÄ×¢ÊÍÓï¾äºÍ³ÌÐòÓï¾ä£¬Ð޸ijÌÐòP3.8£¬¶Ô³ÌÐòÉú³ÉµÄͼÐÎÖеÄÁ½¸öÖá¼Ó±ê¼Ç¡£Ê±ÒÆÁ¿ÊǶàÉÙ£¿

clf;

x = [0 2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N; y = circshift(x,5); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('|X[k]|'); subplot(2,2,2) stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('|Y[k]|'); subplot(2,2,3)

stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('arg(X[k])'); subplot(2,2,4)

stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('arg(Y[k])');

ʱÒÆÁ¿ÊÇ5¡£

Q3.33ÔËÐÐÐ޸ĺóµÄ³ÌÐò²¢ÑéÖ¤ÀëÉ¢¸µÀïÒ¶±ä»»µÄÔ²ÖÜʱÒÆÐÔÖÊ¡£

Q3.34Ñ¡È¡Á½¸ö²»Í¬µÄʱÒÆÁ¿£¬ÖØ×öÏ°ÌâQ3.33¡£ £¨1£©Ð޸ĺóµÄ³ÌÐòÈçÏ£º

clf;

x = [0 2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N; y = circshift(x,3); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('|X[k]|'); subplot(2,2,2) stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('|Y[k]|'); subplot(2,2,3) stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('arg(X[k])'); subplot(2,2,4) stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('arg(Y[k])');

£¨2£©Ð޸ĺóµÄ³ÌÐòÈçÏ£º

clf;

x = [0 2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N; y = circshift(x,6); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('|X[k]|'); subplot(2,2,2) stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('|Y[k]|'); subplot(2,2,3)

stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('arg(X[k])'); subplot(2,2,4)

stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('arg(Y[k])');

Q3.35Ñ¡È¡Á½¸ö²»Í¬³¤¶ÈµÄÐòÁУ¬ÖØ×öÏ°ÌâQ3.33¡£

Ð޸ĺóµÄ³ÌÐòÈçÏ£º

clf;

x = [2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N; y = circshift(x,5); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('|X[k]|'); subplot(2,2,2) stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('|Y[k]|'); subplot(2,2,3) stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('arg(X[k])'); subplot(2,2,4) stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('arg(Y[k])');

Ð޸ĺóµÄ³ÌÐòÈçÏ£º

clf;

x = [0 2 4 6 8 10 12]; N = length(x)-1; n = 0:N; y = circshift(x,5); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('|X[k]|'); subplot(2,2,2) stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('|Y[k]|'); subplot(2,2,3) stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence'); xlabel('Frequency index k'); ylabel('arg(X[k])'); subplot(2,2,4) stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence'); xlabel('Frequency index k'); ylabel('arg(Y[k])');

Q3.36ÔËÐгÌÐòP3.9²¢ÑéÖ¤ÀëÉ¢¸µÀïÒ¶±ä»»µÄÔ²Öܾí»ýÐÔÖÊ

g1 = [1 2 3 4 5 6]; g2 = [1 -2 3 3 -2 1]; ycir = circonv(g1,g2);

disp('Result of circular convolution = ');disp(ycir) G1 = fft(g1); G2 = fft(g2); yc = real(ifft(G1.*G2));

disp('Result of IDFT of the DFT products = ');disp(yc)

½á¹û£º

x1 =

1 2 3 4 5 6 x2 =

1 -2 3 3 -2 1 Result of circular convolution = 12 28 14 0 16 14 Result of IDFT of the DFT products = 12 28 14 0 16 14

Q3.37Ñ¡È¡ÁíÍâÁ½×éµÈ³¤ÐòÁÐÖØ×öÏ°ÌâQ3.36¡£ g1 = [2 3 7 1 6 -5]; g2 = [-4 6 7 0 2 9]; ycir = circonv(g1,g2);

disp('Result of circular convolution = ');disp(ycir) G1 = fft(g1); G2 = fft(g2); yc = real(ifft(G1.*G2));

disp('Result of IDFT of the DFT products = ');disp(yc) x1 =

2 3 7 1 6 -5 x2 =

-4 6 7 0 2 9 Result of circular convolution = 45 30 25 103 -10 87 Result of IDFT of the DFT products =

45.0000 30.0000 25.0000 103.0000 -10.0000 87.0000 Q3.38ÔËÐгÌÐòP3.10²¢ÑéÖ¤ÏßÐÔ¾í»ý¿Éͨ¹ýÔ²Öܾí»ýµÃµ½¡£ g1 = [1 2 3 4 5];g2 = [2 2 0 1 1]; g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; ylin = circonv(g1e,g2e);

disp('Linear convolution via circular convolution = ');disp(ylin); y = conv(g1, g2);

disp('Direct linear convolution = ');disp(y) x1 =

1 2 3 4 5 0 0 0 0 x2 =

2 2 0 1 1 0 0 0 0 Linear convolution via circular convolution =

2 6 10 15 21 15 7 9 5 Direct linear convolution =

2 6 10 15 21 15 7 9 5

Q3.39Ñ¡È¡Á½×鳤µÄ²»µÈµÄÐòÁÐÖØ×öÏ°ÌâQ3.38¡£ g1 = [1 2 3 4 5];g2 = [2 2 0 1 1 5]; g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; ylin = circonv(g1e,g2e);

disp('Linear convolution via circular convolution = ');disp(ylin); y = conv(g1, g2);

disp('Direct linear convolution = ');disp(y) x1 =

1 2 3 4 5 0 0 0 0 0 x2 =

2 2 0 1 1 5 0 0 0 0 Linear convolution via circular convolution =

2 6 10 15 21 20 17 24 25 25 Direct linear convolution =

2 6 10 15 21 20 17 24 25 25

Q3.40±àдһ¸öMATLAB³ÌÐò£¬¶ÔÁ½¸öÐòÁÐ×öÀëÉ¢¸µÀïÒ¶±ä»»£¬ÒÔÉú³ÉËûÃǵÄÏßÐÔ¾í»ý¡£Óô˳ÌÐòÑé֤ϰÌâQ3.38ºÍÏ°ÌâQ3.39µÄ½á¹û¡£ ÑéÖ¤Q3.38:

g1=[1 2 3 4 5]; g2=[2 2 0 1 1];

g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; G1EF=fft(g1e); G2EF=fft(g2e);

ylin=real(ifft(G1EF.*G2EF));

disp('Linear convolution via DFT ='); disp(ylin);

Linear convolution via DFT =

2.0000 6.0000 10.0000 15.0000 21.0000 15.0000 7.0000 9.0000

5.0000 ÑéÖ¤Q3.39:

g1=[1 2 3 4 5]; g2=[2 2 0 1 1 5];

g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; G1EF=fft(g1e); G2EF=fft(g2e);

ylin=real(ifft(G1EF.*G2EF));

disp('Linear convolution via DFT ='); disp(ylin);

Linear convolution via DFT =

2.0000 6.0000 10.0000 15.0000 21.0000 20.0000 17.0000 24.0000 25.0000 25.0000

2?5z?1?9z?2?5z?3?3z?4Q3.46ʹÓóÌÐòP3.1ÔÚµ¥Î»Ô²ÉúÇóÏÂÃæµÄz±ä»»£ºG(z)? ?1?2?3?45?45z?2z?z?zclf;

w = -4*pi:8*pi/511:4*pi;

num = [2 5 9 5 3];den = [5 45 2 1 1]; h = freqz(num, den, w); subplot(2,1,1)

plot(w/pi,real(h));grid

title('Real part of H(e^{j\\omega})') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,imag(h));grid

title('Imaginary part of H(e^{j\\omega})') xlabel('\\omega /\\pi'); ylabel('Amplitude'); pause

subplot(2,1,1)

plot(w/pi,abs(h));grid

title('Magnitude Spectrum |H(e^{j\\omega})|') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,angle(h));grid

title('Phase Spectrum arg[H(e^{j\\omega})]')

xlabel('\\omega /\\pi');

ylabel('Phase in radians');

Q3.47±àдһ¸öMATLAB³ÌÐò£¬¼ÆËã²¢ÏÔʾÁãµãºÍ¼«µã£¬¼ÆËã²¢ÏÔʾÆäÒòʽÐÎʽ£¬²¢²úÉúÒÔzµÄÁ½¸ö¶àÏîʽ֮±ÈµÄÐÎʽ±íʾµÄz±ä»»µÄÁãµãͼ¡£Ê¹ÓøóÌÐò£¬·ÖÎöʽ£¨3.32£©µÄz±ä»»G(z)¡£ ?1clf;

num=[2 5 9 5 3]; den=[5 45 2 1 1];

[z,p,k]=tf2zp(num,den); disp('Zeros:'); disp(z);

disp('Poles:'); disp(p);

input('Hit to continue...'); [sos k]=zp2sos(z,p,k)

input('Hit to continue...'); zplane(z,p); Zeros:

-1.0000 + 1.4142i -1.0000 - 1.4142i -0.2500 + 0.6614i -0.2500 - 0.6614i Poles:

-8.9576 -0.2718 0.1147 + 0.2627i 0.1147 - 0.2627i Hit to continue... sos =

1.0000 2.0000 3.0000 1.0000 1.0000 0.5000 0.5000 1.0000 k =

9.2293 -0.2293 2.4344 0.0822

0.4000

Hit to continue...

Q3.48ͨ¹ýÏ°ÌâQ3.47²úÉúµÄ¼«Áãµãͼ£¬Çó³öG(z)µÄÊÕÁ²ÓòµÄÊýÄ¿¡£Çå³þµØÏÔʾËùÓеÄÊÕÁ²Óò¡£Óɼ«Áãµãͼ£¬ËµÃ÷Àëɢʱ¼ä¸µÀïÒ¶±ä»»ÊÇ·ñ´æÔÚ¡£ ´ð£ºR1£º|z|<0.2718£¨×ó±ßÐòÁУ¬²»Îȶ¨£© R2£º0.2718<|z|<0.2866£¨Ë«±ßÐòÁУ¬²»Îȶ¨£© R3£º0.2866<|z|<8.9576£¨×ó±ßÐòÁУ¬Îȶ¨£© R4£º|z|>8.9576£¨ÓÒ±ßÐòÁУ¬²»Îȶ¨£©

²»ÄÜ´Ó¼«Áãµãͼ¿Ï¶¨µØ˵DTFTÊÇ·ñ´æÔÚ£¬ÒòΪÆäÊÕÁ²ÓòÒ»¶¨ÒªÖ¸¶¨£¬µ±ÊÕÁ²ÓòÔÚÉÏÊöR3ÄÚËù»ñµÃµÄÐòÁÐȷʵ֤Ã÷ÁËDTFTµÄ´æÔÚ£¬ËüÊÇÒ»¸ö¾ßÓÐË«Ãæ³å»÷ÏìÓ¦µÄÎȶ¨ÏµÍ³¡£

Q3.50±àдһ¸öMATLAB³ÌÐò£¬¼ÆËãÒ»¸öÓÐÀíÄæz±ä»»µÄÇ°L¸öÑù±¾£¬ÆäÖÐLµÄÖµÓÉÓû§Í¨¹ýÃüÁîinputÌṩ¡£ÓøóÌÐò¼ÆËã²¢»­³öʽ£¨3.32£©ÖÐG(z)µÄÄæ±ä»»µÄÇ°50¸öÑù±¾¡£Ê¹ÓÃÃüÁîstem»­³öÓÉÄæ±ä»»²úÉúµÄÐòÁС£ clf;

num=[2 5 9 5 3]; den=[5 45 2 1 1];

L=input('Enter the number of samples L:'); [g t]=impz(num,den,L); stem(t,g);

title(['First',num2str(L),'samples of impulse response']); xlabel('Time Index n'); ylabel('h[n]');

ʵÑéÃû³Æ£ºÊý×ÖÂ˲¨Æ÷µÄƵÓò·ÖÎöºÍʵÏÖ

ʵÑéÄ¿µÄ£º

ÕÆÎÕÂ˲¨Æ÷µÄ´«Ê亯ÊýºÍƵÂÊÏìÓ¦µÄ¹Øϵ£¬Äܹ»´ÓƵÂÊÏìÓ¦ºÍÁ㼫µãģʽ·ÖÎöÂ˲¨Æ÷ÌØÐÔ¡£ÕÆÎÕÂ˲¨Æ÷µÄ³£Óýṹ¡£ ʵÑéÈÎÎñ£º

ÇóÂ˲¨Æ÷µÄ·ù¶ÈÏìÓ¦ºÍÏàλÏìÓ¦£¬¹Û²ì¶Ô³ÆÐÔ£¬ÅжÏÂ˲¨Æ÷ÀàÐÍ£¬ÅжÏÎȶ¨ÐÔ¡£ÑéÖ¤FIRÏßÐÔÏàλÂ˲¨Æ÷µÄÌص㡣ʵÏÖÊý×ÖÂ˲¨Æ÷µÄÖ±½ÓÐÍ¡¢¼¶ÁªÐͺͲ¢ÁªÐͽṹ¡£ ʵÑéÄÚÈÝ£º

´«Ê亯ÊýºÍƵÂÊÏìÓ¦¡¢Â˲¨Æ÷Îȶ¨ÐÔ£ºQ4.1¡«4.3£¬Q4.5£¬Q4.6£¬Q4.19 ÏßÐÔÏàλÂ˲¨Æ÷£ºQ4.19

Êý×ÖÂ˲¨Æ÷½á¹¹£ºQ6.1£¬Q6.3£¬Q6.5

Êý×ÖÂ˲¨Æ÷·ÂÕ棺Q8.1£¬Q 8.3£¬Q 8.5£¬Q 8.9£¬Q 8.10£¬Q 8.14 ʵÑé¹ý³ÌÓë½á¹û·ÖÎö£º?²Î¼ûʵÑéÒ»¸ñʽ?

Q4.1Ð޸ijÌÐòP3.1£¬È¡Èý¸ö²»Í¬µÄMÖµ£¬µ±0???2?ʱ¼ÆËã²¢»­³öʽ£¨2.13£©Ëùʾ»¬¶¯Æ½¾ùÂ˲¨Æ÷µÄ·ù¶ÈºÍÏàλÆס£Ö¤Ã÷ÓÉ·ù¶ÈºÍÏàλÆ×±íÏÖ³öµÄ¶Ô³ÆÀàÐÍ¡£Ëü±íʾÁËÄÄÖÖÀàÐ͵ÄÂ˲¨Æ÷£¿ÄãÏÖÔÚÄܽâÊÍQ2.1µÄ½á¹ûÂ𣿠´ð£º

clf;

w = 0:8*pi/511:2*pi;

M=input('Â˲¨Æ÷ËùÐ賤¶È='); num = ones(1,M);

y = freqz(num, 1, w)/M; subplot(2,1,1)

plot(w/pi,abs(y));grid

title('Magnitude Spectrum |Y(e^{j\\omega})|') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,angle(y));grid

title('Phase Spectrum arg[Y(e^{j\\omega})]') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); £Í£½£²

£Í£½£µ

£Í£½£¸

Ëü±íʾÁË¢òÐÍÂ˲¨Æ÷¡£

Q4.2ʹÓÃÐ޸ĺóµÄ³ÌÐòP3.1£¬¼ÆËã²¢»­³öµ±0????ʱ´«Ê亯Êý

0.15(1?z?2) H(z)?1?0.5z?1?0.7z?2µÄÒò¹ûÏßÐÔʱ²»±äÀëɢʱ¼äϵͳµÄƵÂÊÏìÓ¦¡£Ëü±íʾÄÄÖÖÀàÐ͵ÄÂ˲¨Æ÷£¿ ´ð£ºclf;

w = 0:8*pi/511:pi;

M=input('Â˲¨Æ÷ËùÐ賤¶È='); num =[0.15 0 -0.15]; den=[1 -0.5 0.7];

y = freqz(num, den, w)/M; subplot(2,1,1)

plot(w/pi,abs(y));grid

title('Magnitude Spectrum |Y(e^{j\\omega})|') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,angle(y));grid

title('Phase Spectrum arg[Y(e^{j\\omega})]') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); Â˲¨Æ÷ËùÐ賤¶È=1

Ëü±íʾ´øͨÂ˲¨Æ÷¡£

Q4.3¶ÔÏÂÃæµÄ´«Ê亯ÊýÖØ×öÏ°ÌâQ4.2£º

0.15(1?z?2) G(z)?0.7?0.5z?1?z?2ʽ£¨4.36£©ºÍʽ£¨4.37£©¸ø³öµÄÁ½¸öÂ˲¨Æ÷Ö®¼äµÄÇø±ðÊÇʲô£¿Ä㽫ѡÔñÄÄÒ»¸öÂ˲¨Æ÷À´Â˲¨£¬ÎªÊ²Ã´£¿ clf;

w = 0:8*pi/511:pi;

M=input('Â˲¨Æ÷ËùÐ賤¶È='); num =[0.15 0 -0.15]; den=[0.7 -0.5 1];

y = freqz(num, den, w)/M; subplot(2,1,1)

plot(w/pi,abs(y));grid

title('Magnitude Spectrum |Y(e^{j\\omega})|') xlabel('\\omega /\\pi'); ylabel('Amplitude'); subplot(2,1,2)

plot(w/pi,angle(y));grid

title('Phase Spectrum arg[Y(e^{j\\omega})]') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); Â˲¨Æ÷ËùÐ賤¶È=1

Çø±ðÔÚÓÚÏàλÆ×£¬ÎÒ»áÑ¡ÔñÇ°ÕßÀ´Â˲¨£¬ÒòΪǰÕßµÄÏàλÆ×Ïà¶Ôƽ»º£¬ºóÕßÔÚͨ´øÄÚÓнϴóµÄÏàλͻ±ä¡£

Q4.5ʹÓÃÏ°ÌâQ3.50ÖбàдµÄ³ÌÐò£¬·Ö±ð¼ÆËã²¢»­³öʽ£¨4.36£©ºÍʽ£¨4.37£©È·¶¨µÄÁ½¸öÂ˲¨Æ÷µÄ³å¼¤ÏìÓ¦ÖеÄÇ°100¸öÑù±¾¡£ÌÖÂÛÄãµÄ½á¹û¡£ ʽ£¨4.36£©£º

clf;

num=[0.15 0 -0.15]; den=[1 -0.5 0.7];

L=input('Enter the number of samples L:'); [g t]=impz(num,den,L); stem(t,g);

title(['First',num2str(L),'samples of impulse response']); xlabel('Time Index n'); ylabel('h[n]');

Enter the number of samples L:100

clf;

num=[0.15 0 -0.15]; den=[0.7 -0.5 1];

L=input('Enter the number of samples L:'); [g t]=impz(num,den,L); stem(t,g);

title(['First',num2str(L),'samples of impulse response']); xlabel('Time Index n'); ylabel('h[n]');

Enter the number of samples L:100

Á½Õß·´×ª¡£

Q4.6ʹÓÃzplane·Ö±ðÉú³Éʽ£¨4.36£©ºÍʽ£¨4.37£©È·¶¨µÄÁ½¸öÂ˲¨Æ÷µÄ¼«Áãµãͼ¡£ÌÖÂÛÄãµÄ½á¹û¡£ ʽ£¨4.36£©£ºnum = [0.15 0 -1]; den = [1 -0.5 0.7]; zplane(num,den);

ʽ£¨4.36£©£ºnum = [0.15 0 -1]; den = [0.7 -0.5 1]; zplane(num,den);

Á½ÕßµÄÁãµãÒ»Ñù£¬¼«µãÇ°ÕßÔÚÔ²ÄÚ£¬ºóÕßÔÚÔ²Íâ¡£ Q4.19ÔËÐгÌÐòP4.3£¬Éú³ÉÿһÀàÏßÐÔÏàλÓÐÏ޳弤ÏìÓ¦Â˲¨Æ÷µÄ³å¼¤ÏìÓ¦¡£Ã¿Ò»¸öÓÐÏÞ³å

¼¤ÏìÓ¦Â˲¨Æ÷µÄ³¤¶ÈÊǶàÉÙ£¿ÑéÖ¤³å¼¤ÏìÓ¦ÐòÁеĶԳÆÐÔ¡£½Ó×ÅÑéÖ¤ÕâЩÂ˲¨Æ÷µÄÁãµãλÖá£Ê¹ÓÃMATLAB¼ÆËã²¢»æÖƳöÕâЩÂ˲¨Æ÷µÄÏàλÏìÓ¦£¬ÑéÖ¤ËüÃǵÄÏßÐÔÏàλÌØÐÔ¡£ÕâЩÂ˲¨Æ÷µÄȺÑӳٵĶàÉÙ£¿ £¨£±£©

³¤¶È·Ö±ðÊÇ9,10,9,10£» £¨£²£©

Zeros of Type 1 FIR Filter are 2.9744 2.0888 0.9790 + 1.4110i 0.9790 - 1.4110i 0.3319 + 0.4784i 0.3319 - 0.4784i 0.4787 0.3362

Zeros of Type 2 FIR Filter are 3.7585 + 1.5147i 3.7585 - 1.5147i 0.6733 + 2.6623i 0.6733 - 2.6623i -1.0000 0.0893 + 0.3530i 0.0893 - 0.3530i 0.2289 + 0.0922i 0.2289 - 0.0922i

Zeros of Type 3 FIR Filter are 4.7627 1.6279 + 3.0565i

1.6279 - 3.0565i -1.0000 1.0000 0.1357 + 0.2549i 0.1357 - 0.2549i 0.2100

Zeros of Type 4 FIR Filter are 3.4139 1.6541 + 1.5813i 1.6541 - 1.5813i -0.0733 + 0.9973i -0.0733 - 0.9973i 1.0000 0.3159 + 0.3020i 0.3159 - 0.3020i 0.2929 £¨£³£© pause

w = -4*pi:8*pi/511:4*pi; h1=freqz(num1,1,w); h2=freqz(num2,1,w); h3=freqz(num3,1,w); h4=freqz(num4,1,w); subplot(2,2,1);

plot(w/pi,angle(h1));grid title('Phase Spectrum') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); grid; title('Type 1 FIR Filter'); subplot(2,2,2);

plot(w/pi,angle(h2));grid title('Phase Spectrum') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); grid; title('Type 2 FIR Filter'); subplot(2,2,3);

plot(w/pi,angle(h3));grid title('Phase Spectrum') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); grid; title('Type 3 FIR Filter'); subplot(2,2,4);

plot(w/pi,angle(h4));grid

title('Phase Spectrum') xlabel('\\omega /\\pi');

ylabel('Phase in radians'); grid; title('Type 4 FIR Filter');

£¨£´£© pause

subplot(2,2,1); grpdelay(h1);

title('Type 1 FIR Filter'); subplot(2,2,2); grpdelay(h1);

title('Type 2 FIR Filter'); subplot(2,2,3); grpdelay(h1);

title('Type 3 FIR Filter'); subplot(2,2,4); grpdelay(h1);

title('Type 4 FIR Filter');

Q6.1ʹÓóÌÐòP6.1£¬Éú³ÉÈçÏÂÓÐÏ޳弤ÏìÓ¦´«Ê亯ÊýµÄÒ»¸ö¼¶ÁªÊµÏÖ£º

H1(z)?2?10z?1?23z?2?34z?3?31z?4?16z?5?4z?6

»­³ö¼¶ÁªÊµÏֵĿòͼ¡£H1(z)ÊÇÒ»¸öÏßÐÔÏàλ´«Ê亯ÊýÂð£¿

num = input('Numerator coefficient vector = '); den = input('Denominator coefficient vector = '); [z,p,k] = tf2zp(num,den); sos = zp2sos(z,p,k)

Numerator coefficient vector = [2 10 23 34 31 16 4] Denominator coefficient vector = [1 1 1 1 1 1 1] sos =

2.0000 6.0000 4.0000 1.0000 -1.2470 1.0000 1.0000 1.0000 0.5000 1.0000 1.8019 1.0000

1.0000 1.0000 2.0000 1.0000 0.4450 1.0000

Q6.3ʹÓóÌÐòP6.1£¬Éú³ÉÈçÏÂÒò¹ûÎÞÏ޳弤ÏìÓ¦´«Ê亯ÊýµÄ¼¶ÁªÊµÏÖ£º

3?8z?1?12z?2?7z?3?2z?4?2z?5 H1(z)?16?24z?1?24z?2?14z?3?5z?4?z?5»­³ö¼¶ÁªÊµÏֵĿòͼ¡£

Numerator coefficient vector = [3 8 12 7 2 -2]

Denominator coefficient vector = [16 24 24 14 5 1] sos =

0.1875 -0.0625 0 1.0000 0.5000 0 1.0000 2.0000 2.0000 1.0000 0.5000 0.2500

1.0000 1.0000 1.0000 1.0000 0.5000 0.5000

Q6.5ʹÓóÌÐòP6.2Éú³Éʽ£¨£¶£®£²£·£©ËùʾÒò¹ûÎÞÏ޳弤ÏìÓ¦´«Ê亯ÊýµÄÁ½ÖÖ²»Í¬²¢ÁªÐÎʽʵÏÖ¡£»­³öÁ½ÖÖʵÏֵĿòͼ¡£

num = input('Numerator coefficient vector = '); den = input('Denominator coefficient vector = '); [r1,p1,k1] = residuez(num,den); [r2,p2,k2] = residue(num,den); disp('Parallel Form I') disp('Residues are');disp(r1); disp('Poles are at');disp(p1); disp('Constant value');disp(k1); disp('Parallel Form II') disp('Residues are');disp(r2); disp('Poles are at');disp(p2); disp('Constant value');disp(k2);

Numerator coefficient vector = [3 8 12 7 2 -2]

Denominator coefficient vector = [16 24 24 14 5 1] Parallel Form I Residues are

-0.4219 + 0.6201i -0.4219 - 0.6201i 2.3437 0.3437 - 2.5079i 0.3437 + 2.5079i Poles are at

-0.2500 + 0.6614i -0.2500 - 0.6614i

-0.5000 -0.2500 + 0.4330i -0.2500 - 0.4330i Constant value -2

Parallel Form II Residues are

-0.3047 - 0.4341i -0.3047 + 0.4341i -1.1719 1.0000 + 0.7758i 1.0000 - 0.7758i Poles are at

-0.2500 + 0.6614i -0.2500 - 0.6614i -0.5000 -0.2500 + 0.4330i -0.2500 - 0.4330i Constant value

0.1875

Q8.1³ÌÐòP8.1Éè¼ÆÁËʲôÀàÐ͵ÄÂ˲¨Æ÷£¿ÆäÖ¸±êÊÇʲô£¿Â˲¨Æ÷µÄ½×ÊýÊǶàÉÙ£¿ÎªÁËÑéÖ¤·ÂÕ棬Ðè¼ÆËã¶àÉÙ¸ö³å¼¤ÏìÓ¦Ñù±¾£¿·ÂÕæÊÇÕýÈ·µÄÂð£¿

?s?[0.1?,0.8?]£¬Rp?1dB£¬Â˲¨Æ÷ÀàÐÍΪIIR´ø×èÂ˲¨Æ÷£¬ÆäÖ¸±êΪ?p?[0.4?,0.5?]£¬

Rs?30dB£¬Â˲¨Æ÷½×ÊýΪ4¡£Ðè¼ÆËãµÄ³å¼¤ÏìÓ¦Ñù±¾Îª£²¸ö¡£·ÂÕæÕýÈ·¡£

Q8.3Éú³ÉÔÚÏ°ÌâQ8.1ÖвúÉúµÄ´«Ê亯ÊýµÄÒ»¸ö¼¶ÁªÊµÏÖ£¬²¢±àд³öÒ»¸ö³ÌÐòÀ´·ÂÕæËü£¬Æä

ÖÐÿ¸öµ¥¶ÀµÄ²¿·ÖÓÃÒ»¸öÖ±½Ó¢òÐÍʵÏÖ¡£ÑéÖ¤·ÂÕæ¡£

format short

num=input('Numerator coefficients='); den=input('Denominator coefficients='); Numfactors=factorize(num); Denfactors=factorize(den);

disp('Numerator Factor'),disp(Numfactors) disp('Denominator Factor'),disp(Denfactors)

Numerator coefficients=[0.0571 0 -0.1143 0 0.0571]

Denominator coefficients=[1 -0.5099 1.2862 -0.335 0.4479] Numerator Factors Columns 1 through 3 1.0000 1.0211 0 1.0000 0.9793 0 1.0000 -1.0211 0 1.0000 -0.9793 0 Denominator Factors Columns 1 through 3

1.0000 -0.5976 0.6785 1.0000 0.0877 0.6601

Q8.5Éú³ÉÔÚÏ°ÌâQ8.1ÖвúÉúµÄ´«Ê亯ÊýµÄÒ»¸ö²¢Áª¢ñÐÍʵÏÖ£¬²¢±àд³öÒ»¸ö³ÌÐòÀ´·ÂÕæËü£¬ÆäÖÐÿ¸öµ¥¶ÀµÄ²¿·ÖÓÃÒ»¸öÖ±½Ó¢òÐÍʵÏÖ¡£ÑéÖ¤·ÂÕæ¡£

num=input('Numerator coefficient vector='); den=input('Denominator coefficient vector='); [r1,p1,k1]=residuez(num,den); [r2,p2,k2]=residue(num,den); disp('Parallel Form 1') disp('Residues are');disp(r1); disp('Poles are at');disp(p1); disp('Constant value');disp(k1); disp('Parallel Form 2') disp('Residues are');disp(r2); disp('Poles are at');disp(p2); disp('Constant value');disp(k2); [b1,a1]=residuez(R1,P1,0); R1=[r1(1) r1(2) r1(3) r1(4)]; P1=[p1(1) p1(2) p1(3) p1(4)]; disp('b1=');disp(b1); disp('a1=');disp(a1);

Numerator coefficient vector=[0.0571 0 -0.1143 0 0.0571]

Denominator coefficient vector=[1 -0.5099 1.2862 -0.335 0.4479] Parallel Form 1 Residues are

-0.0235 + 0.1977i

-0.0235 - 0.1977i -0.0117 - 0.2130i -0.0117 + 0.2130i

Poles are at

0.2988 + 0.7676i 0.2988 - 0.7676i -0.0439 + 0.8113i -0.0439 - 0.8113i

Constant value 0.1275

Parallel Form 2 Residues are

-0.1588 + 0.0411i -0.1588 - 0.0411i 0.1734 - 0.0002i 0.1734 + 0.0002i

Poles are at

0.2988 + 0.7676i 0.2988 - 0.7676i -0.0439 + 0.8113i -0.0439 - 0.8113i

Constant value

0.0571 b1=

-0.0470 -0.2895 a1=

1.0000 -0.5976

Q8.9³ÌÐòP8.£³Éè¼ÆÁËʲôÀàÐ͵ÄÂ˲¨Æ÷£¿ÆäÖ¸±êÊÇʲô£¿Â˲¨Æ÷µÄ½×ÊýÊǶàÉÙ£¿ÐγÉÊäÈëµÄÕýÏÒÐòÁеÄƵÂÊÊǶàÉÙ£¿

IIRµÍͨÍÖÔ²Â˲¨Æ÷£¬Ö¸±êΪ?p?0.25?£¬?s?0.55?£¬Rp?0.5dB£¬Rs?50dB£¬½×ÊýΪ8£¬ÊäÈëµÄÕýÏÒÐòÁеÄƵÂÊΪf=0.7kHz¡£

Q8.10ÔËÐгÌÐòP8.3²¢²úÉúÁ½¸öͼÐΡ£ÄÄÖÖÊäÈë³É·Ö»áÔÚÂ˲¨Æ÷Êä³ö³öÏÖ£¿ÎªÊ²Ã´Êä³öÐòÁеĿªÊ¼²¿·Ö²»ÊÇÒ»ÖÖÀíÏëµÄÕýÏÒÐòÁУ¿Ð޸ijÌÐòP8.3£¬ÒÔ±ãÖ»¹ýÐòÁÐX£²£Û£î£Ý¡£²úÉúµÄÊä³öÐòÁкÍÔ¤ÁÏÒ»ÑùÂð£¿Ö¤Ã÷ÄãµÄ´ð°¸¡£

Input Sequence420-2-4051015202530Time index nOutput Sequence35404550AmplitudeAmplitude420-2-4051015202530Time index n35404550

´ð£º²úÉúµÄÊä³öÐòÁкÍÔ¤ÁÏÊDz»Ò»ÑùµÄ¡£

Q8.14³ÌÐòP8.£´Éè¼ÆÁËʲôÀàÐ͵ÄÂ˲¨Æ÷£¿ÆäÖ¸±êÊÇʲô£¿Â˲¨Æ÷µÄ½×ÊýÊǶàÉÙ£¿ÎªÁËÑéÖ¤·ÂÕ棬Ðè¼ÆËã¶àÉÙ¸ö³å¼¤ÏìÓ¦Ñù±¾£¿·ÂÕæÊÇÕýÈ·µÄÂð£¿

FIRµÍͨÂ˲¨Æ÷£¬Ö¸±êΪ?p?[0,0.3?]£¬?s?[0.5?,?]£¬½×ÊýΪ9£¬ÎªÁËÑéÖ¤·ÂÕæÐè¼ÆËãµÄ³å¼¤ÏìÓ¦Ñù±¾Îª10¸ö¡£·ÂÕæÕýÈ·¡£

ʵÑéÃû³Æ£ºÊý×ÖÂ˲¨Æ÷µÄÉè¼Æ

ʵÑéÄ¿µÄºÍÈÎÎñ£º

£¨1£©Óô°¿Ú·¨Éè¼ÆÂú×ãÖ¸±êµÄFIRÊý×ÖÂ˲¨Æ÷¡£ £¨2£©ÒÔÄ£ÄâµÍͨÂ˲¨Æ÷ΪԭÐÍÉè¼ÆIIRÊý×ÖÂ˲¨Æ÷

£¨3£©Ñ¡¶¨Ò»¸öÐźÅÂ˲¨ÎÊÌ⣬Éè¼ÆÊý×ÖÂ˲¨Æ÷£¬ÑéÖ¤Â˲¨Ð§¹û¡£

ʵÑéÄÚÈÝ£º

ÔĶÁPage 91-93ÏàÓ¦µÄº¯ÊýºÍ³ÌÐòP7.1,Íê³ÉQ7.1, Q7.5,Q7.6 ÔĶÁPage 94-96ÏàÓ¦µÄº¯Êý, Íê³ÉQ7.9,Q7.13,Q7.14,Q7.20 sincº¯ÊýµÄ¹¦ÄÜÓëʹÓ㬿Éͨ¹ýhelp²éѯ£º

Matlab-Help-Search-Function Name-ÊäÈësinc ʵÑéÖ¸µ¼ÊéPage 49ÓÐsincº¯ÊýʹÓÃʵÀý

·ù¶ÈÏìÓ¦µÄ·ÖÎö£º

ͨ¹ýDTFT¶¨Òå¼ÆËã·ù¶ÈÏìÓ¦ ͨ¹ýfreqzº¯Êý·ÖÎö

ʵÑé¹ý³ÌÓë½á¹û·ÖÎö£º?²Î¼ûʵÑéÒ»¸ñʽ?

Q7.1ÓÃMATLABÈ·¶¨Ò»¸öÊý×ÖÎÞÏÞ³å»÷ÏìÓ¦µÍͨÂ˲¨Æ÷ËùÓÐËÄÖÖÀàÐ͵Ä×îµÍ½×Êý¡£Ö¸±êÈçÏ£º40kHzµÄ³éÑùÂÊ£¬4kHzµÄͨ´ø±ß½çƵÂÊ£¬8kHzµÄ×è´ø±ß½çƵÂÊ£¬0.5dBµÄͨ´ø²¨ÎÆ£¬40dBµÄ×îС×è´øË¥¼õ¡£ÆÀÂÛÄãµÄ½á¹û¡£

½â£ºFT=40kHz£¬Fp=4kHz£¬Fs=8kHz£¬Rp=0.5dB£¬Rs=40dB¡£

?p?2?FpFT2??4?103??0.2? 340?10Wp??p?0.2 ?2?Fs2??8?103?s???0.4? 3FT40?10Ws??s?0.4 ?£¨1£©°ÍÌØÎÖ×ÈÂ˲¨Æ÷£º

[N,Wn]=buttord(0.2,0.4,0.5,40)

ÔËÐнá¹û£º N = 8 Wn =

0.2469

´ð£º×îµÍ½×ÊýÊÇ8.

£¨2£©ÇбÈÑ©·ò1ÐÍÂ˲¨Æ÷£º

[N,Wn]=cheb1ord(0.2,0.4,0.5,40)

ÔËÐнá¹û£º N =

5 Wn =

0.2000

´ð£º×îµÍ½×ÊýÊÇ5.

£¨3£©ÇбÈÑ©·ò2ÐÍÂ˲¨Æ÷£º

[N,Wn]=cheb2ord(0.2,0.4,0.5,40)

ÔËÐнá¹û£º N = 5 Wn =

0.4000

´ð£º×îµÍ½×ÊýÊÇ5. £¨4£©ÍÖÔ²Â˲¨Æ÷£º

[N,Wn]=ellipord(0.2,0.4,0.5,40)

ÔËÐнá¹û£º N = 4 Wn =

0.2000

´ð£º×îµÍ½×ÊýÊÇ4.

Q7.5ͨ¹ýÔËÐгÌÐòP7.1À´Éè¼Æ°ÍÌØÎÖ×È´ø×èÂ˲¨Æ÷¡£Ð´³öËù²úÉúµÄ´«Ê亯ÊýµÄ׼ȷ±í´ïʽ¡£Â˲¨Æ÷µÄÖ¸±êÊÇʲô£¿ÄãµÄÉè¼Æ·ûºÏÖ¸±êÂð£¿Ê¹ÓÃMATLAB£¬¼ÆËã²¢»æÖÆÂ˲¨Æ÷µÄδ»û±äµÄÏàλÏìÓ¦¼°ÈºÑÓ³ÙÏìÓ¦¡£ MATLAB³ÌÐò£º

Ws = [0.4 0.6]; Wp = [0.2 0.8]; Rp = 0.4; Rs = 50; [N1, Wn1] = buttord(Wp, Ws, Rp, Rs); [num,den] = butter(N1,Wn1,'stop');

disp('Numerator Coefficients are ');disp(num); disp('Denominator Coefficients are ');disp(den); [g, w] = gain(num,den); plot(w/pi,g);grid axis([0 1 -60 5]);

xlabel('\\omega /\\pi'); ylabel('Gain in dB');

title('Gain Response of a Butterworth Bandstop Filter');

ÔËÐнá¹û£º

Numerator Coefficients are

0.0493 0.0000 0.2465 0.0000 0.4930 0.0000 0.4930 0.0000 0.2465 0.0000 0.0493 Denominator Coefficients are

1.0000 0.0000 -0.0850 0.0000 0.6360 0.0000 -0.0288 0.0000 0.0561 0.0000 -0.0008

0.0493?0.2465z?2?0.493z?4?0.493z?6?0.2465z?8?0.0493z?10±í´ïʽ£ºH(z)?

1?0.085z?2?0.636z?4?0.0288z?6?0.0561z?8?0.0008z?10Ö¸±ê£º?p1?0.2?£¬?p2?0.8?£¬?s1?0.4?£¬?s2?0.6?£¬Rp?0.4dB£¬Rs?50dB¡£

±àдµÄMATLAB³ÌÐòÈçÏ£¨¼ÆËãδ»û±äµÄÏàλÏìÓ¦¼°ÈºÑÓ³ÙÏìÓ¦£©£º

% Program Q7_6

Ws = [0.4 0.6]; Wp = [0.2 0.8]; Rp = 0.4; Rs = 50; % Estimate the Filter Order

[N1, Wn1] = buttord(Wp, Ws, Rp, Rs); % Design the Filter

[num,den] = butter(N1,Wn1,'stop');

% Find the frequency response; find and plot unwrapped phase wp = 0:pi/1023:pi; wg = 0:pi/511:pi; Hz = freqz(num,den,wp); Phase = unwrap(angle(Hz)); figure(1);

plot(wp/pi,Phase); grid;

% axis([0 1 a b]);

xlabel('\\omega /\\pi'); ylabel('Unwrapped Phase (rad)');

title('Unwrapped Phase Response of a Butterworth Bandstop Filter'); % Find and plot the group delay GR = grpdelay(num,den,wg); figure(2); plot(wg/pi,GR); grid;

%axis([0 1 a b]);

xlabel('\\omega /\\pi'); ylabel('Group Delay (sec)');

title('Group Delay of a Butterworth Bandstop Filter');

Q7.6Ð޸ijÌÐòP7.1À´Éè¼Æ·ûºÏÏ°ÌâQ7.1Ëù¸øÖ¸±êµÄÇбÈÑ©·ò1Ð͵ÍͨÂ˲¨Æ÷¡£Ð´³öËù²úÉúµÄ´«Ê亯ÊýµÄ׼ȷ±í´ïʽ¡£ÄãµÄÉè¼Æ·ûºÏÖ¸±êÂð£¿Ê¹ÓÃMATLAB£¬¼ÆËã²¢»æÖÆÂ˲¨Æ÷µÄδ»û±äµÄÏàλÏìÓ¦¼°ÈºÑÓ³ÙÏìÓ¦¡£

ÐÞ¸ÄP7.1³ÌÐò£º

[N, Wn] = cheb1ord(0.2,0.4,0.5,40);Rp=0.5;

[num,den] = cheby1(N,Rp,Wn);[g, w] = Gain(num,den); % Plot the gain response figure(1);

plot(w/pi,g);grid; axis([0 1 -60 5]);

xlabel('\\omega /\\pi'); ylabel('Gain in dB');

title('Gain Response of a Type 1 Chebyshev Lowpass Filter'); figure(2);

w2 = 0:pi/511:pi;

Hz = freqz(num,den,w2); Phase = unwrap(angle(Hz)); plot(w2/pi,Phase);grid;

xlabel('\\omega /\\pi'); ylabel('Unwrapped Phase (rad)'); title('Unwrapped Phase Response of a Type 1 Chebyshev Lowpass Filter'); % Find and plot the group delay figure(3);

GR = grpdelay(num,den,w2); plot(w2/pi,GR);grid;

xlabel('\\omega /\\pi'); ylabel('Group Delay (sec)');

title('Group Delay of a Type 1 Chebyshev Lowpass Filter');

Gain Response of a Type 1 Chebyshev Lowpass Filter0-10-20Gain in dB-30-40-50-6000.10.20.30.40.5? /?0.60.70.80.91