zoukankan      html  css  js  c++  java
  • 《DSP using MATLAB》Problem 4.21

            快到龙抬头,居然下雪了,天空飘起了雪花,温度下降了近20°。

    代码:

    %% ------------------------------------------------------------------------
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Problem 4.21 
    
    ');
    
    banner();
    %% ------------------------------------------------------------------------
    
    
    % ----------------------------------------------------
    %               1        H1(z)
    % ----------------------------------------------------
    
    b = [3/4, 5/4, 1, 1, 5/4, 3/4]; a = [1];                             %  
    
    [R, p, C] = residuez(b,a)
    
    Mp = (abs(p))'
    Ap = (angle(p))'/pi
    
    %% ------------------------------------------------------
    %%   START a    determine H(z) and sketch    
    %% ------------------------------------------------------
    figure('NumberTitle', 'off', 'Name', 'P4.21 H(z) its pole-zero plot')
    set(gcf,'Color','white'); 
    zplane(b,a);
    title('pole-zero plot'); grid on;
    
    %% ----------------------------------------------
    %%    END
    %% ----------------------------------------------
    
    % ------------------------------------
    %                  h(n)  
    % ------------------------------------
    
    [delta, n] = impseq(0, 0, 19); 
    h_check = filter(b, a, delta);                                             % check sequence
    
    
    %% --------------------------------------------------------------
    %%    START    b   |H|   <H
    %%    3rd form of freqz
    %% --------------------------------------------------------------
    w = [-500:1:500]*2*pi/500;     H = freqz(b,a,w); 
    %[H,w] = freqz(b,a,200,'whole');                 % 3rd form of freqz
    
    magH  = abs(H);  angH  = angle(H);  realH  = real(H);  imagH  = imag(H);
    
    %% ================================================
    %%              START H's  mag ang real imag
    %% ================================================
    figure('NumberTitle', 'off', 'Name', 'P4.21  DTFT and Real Imaginary Part ');
    set(gcf,'Color','white'); 
    subplot(2,2,1); plot(w/pi,magH); grid on;  %axis([0,1,0,1.5]); 
    title('Magnitude Response');
    xlabel('frequency in pi units'); ylabel('Magnitude  |H|'); 
    subplot(2,2,3); plot(w/pi, angH/pi); grid on; % axis([-1,1,-1,1]);
    title('Phase Response');
    xlabel('frequency in pi units'); ylabel('Radians/pi');
    
    subplot('2,2,2'); plot(w/pi, realH); grid on;
    title('Real Part');
    xlabel('frequency in pi units'); ylabel('Real');
    subplot('2,2,4'); plot(w/pi, imagH); grid on;
    title('Imaginary Part');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    %% ==================================================
    %%             END H's  mag ang real imag
    %% ==================================================
    
    
    
    % --------------------------------------------------------------
    %        x(n) through the filter, we get output y(n)
    % --------------------------------------------------------------
    N = 200;
    nx = [0:1:N-1];
     x = sin(pi*nx/2) + 5 * cos(pi*nx);
    
    [y, ny] = conv_m(h_check, n, x, nx);
    
    figure('NumberTitle', 'off', 'Name', 'P4.21  Input & h(n) Sequence');
    set(gcf,'Color','white'); 
    subplot(3,1,1); stem(nx, x); grid on;  %axis([0,1,0,1.5]); 
    title('x(n)');
    xlabel('n'); ylabel('x'); 
    subplot(3,1,2); stem(n, h_check); grid on;  %axis([0,1,0,1.5]); 
    title('h(n)');
    xlabel('n'); ylabel('h'); 
    subplot(3,1,3); stem(ny, y); grid on;  %axis([0,1,0,1.5]); 
    title('y(n)');
    xlabel('n'); ylabel('y');
    
    figure('NumberTitle', 'off', 'Name', 'P4.21  Output Sequence');
    set(gcf,'Color','white'); 
    subplot(1,1,1); stem(ny, y); grid on;  %axis([0,1,0,1.5]); 
    title('y(n)');
    xlabel('n'); ylabel('y'); 
    
    
    % ----------------------------------------
    %                yss Response
    % ----------------------------------------
    ax = conv([1,0,1], [1,2,1])
    bx = conv([0,1], [1,2,1]) + conv([5,5], [1,0,1])
    
    by = conv(bx, b) 
    ay = ax
    
    zeros = roots(by)
    
    [R, p, C] = residuez(by, ay)
    
    Mp_Y = (abs(p))'
    Ap_Y = (angle(p))'/pi
    
    %% ------------------------------------------------------
    %%   START a    determine Y(z) and sketch    
    %% ------------------------------------------------------
    figure('NumberTitle', 'off', 'Name', 'P4.21 Y(z) its pole-zero plot')
    set(gcf,'Color','white'); 
    zplane(by, ay);
    title('pole-zero plot'); grid on;
    
    
    % ------------------------------------
    %                  y(n)  
    % ------------------------------------
    LENGH = 100;
    [delta, n] = impseq(0, 0, LENGH-1); 
    y_check = filter(by, ay, delta);                                             % check sequence
    
    y_answer0 = 4.75*delta;
    
    [delta_1, n1] = sigshift(delta, n, 1);
    y_answer1 = 2.25*delta_1;
    
    [delta_2, n2] = sigshift(delta, n, 2);
    y_answer2 = 2.75*delta_2;
    
    [delta_3, n3] = sigshift(delta, n, 3);
    y_answer3 = 3.75*delta_3; 
    
    [delta_4, n4] = sigshift(delta, n, 4);
    y_answer4 = 4.50*delta_4;
    
    y_answer5 = (2*(-0.5)*cos(pi*n/2) + 2*0.5*sin(pi*n/2) ).*stepseq(0,0,LENGH-1);
    
    
    [y01, n01] = sigadd(y_answer0, n,  y_answer1, n1);
    [y02, n02] = sigadd(y_answer2, n2, y_answer3, n3);
    
    [y03, n03] = sigadd(y01, n01, y02, n02);
    [y04, n04] = sigadd(y03, n03, y_answer4, n4);
    
    [y_answer, n_answer] = sigadd(y04, n04, y_answer5, n);
    
    
    figure('NumberTitle', 'off', 'Name', 'P4.21  Yss and Y ');
    set(gcf,'Color','white'); 
    subplot(2,1,1); stem(n, y_answer5); grid on;  %axis([0,1,0,1.5]); 
    title('Steady-State Response');
    xlabel('n'); ylabel('Yss'); 
    subplot(2,1,2); stem(n, y_check); grid on; % axis([-1,1,-1,1]);
    title('Total Response');
    xlabel('n'); ylabel('Y');
    

      运行结果:

            系统函数H(z)的系数:

            系统的DTFT,注意当ω=π/2和π时的振幅谱、相位谱的值。

            当有输入时,输出的Y(z)进行部分分式展开,留数及对应的极点如下:

            单位圆上z=-1处,极点和零点相互抵消,稳态响应只和正负j有关。

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    linux串口驱动分析
    redis 源代码分析(一) 内存管理
    EJB3.0开发环境的搭建
    Google App Engine 学习和实践
    用EnableMenuItem不能使菜单变灰的原因
    hdu 1171 Big Event in HDU(母函数)
    Stack-based buffer overflow in acdb audio driver (CVE-2013-2597)
    遗传算法入门到掌握(一)
    Amazon SQS简单介绍 上篇
    Matlab画图-非常具体,非常全面
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/8596414.html
Copyright © 2011-2022 走看看