• 《DSP using MATLAB》示例Example 8.29


    %% ------------------------------------------------------------------------
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Exameple 8.29 
    
    ');
    
    time_stamp = datestr(now, 31);
    [wkd1, wkd2] = weekday(today, 'long');
    fprintf('      Now is %20s, and it is %8s  
    
    ', time_stamp, wkd2);
    %% ------------------------------------------------------------------------
    
    % Digital Filter Specifications:   Elliptic bandpass
    ws = [0.3*pi 0.75*pi];           % digital stopband freq in rad
    wp = [0.4*pi 0.6*pi];            % digital passband freq in rad
    Rp = 1;                          % passband ripple in dB
    As = 40;                         % stopband attenuation in dB
    
    % Calculation of Elliptic filter parameters:
    [N, wn] = ellipord(wp/pi, ws/pi, Rp, As);
    
    fprintf('
      ********* Elliptic Filter Order is = %3.0f 
    ', N)
    
    % Digital Elliptic Bandpass Filter Design:
    [bhp, ahp] = ellip(N, Rp, As, wn);
    
    [C, B, A] = dir2cas(bhp, ahp)
    
    % Calculation of Frequency Response:
    %[dblp, maglp, phalp, grdlp, wwlp] = freqz_m(blp, alp);
    [dbhp, maghp, phahp, grdhp, wwhp] = freqz_m(bhp, ahp);
    
    
    %% -----------------------------------------------------------------
    %%                             Plot
    %% -----------------------------------------------------------------  
    
    figure('NumberTitle', 'off', 'Name', 'Exameple 8.29')
    set(gcf,'Color','white'); 
    M = 1;                          % Omega max
    
    subplot(2,2,1); plot(wwhp/pi, maghp); axis([0, M, 0, 1.2]); grid on;
    xlabel(' frequency in pi units'); ylabel('|H|'); title('Magnitude Response');
    set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.3, 0.4, 0.6, 0.75, M]);
    set(gca, 'YTickMode', 'manual', 'YTick', [0, 0.8913, 1]);
    
    subplot(2,2,2); plot(wwhp/pi, dbhp); axis([0, M, -50, 2]); grid on;
    xlabel(' frequency in pi units'); ylabel('Decibels'); title('Magnitude in dB');
    set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.3, 0.4, 0.6, 0.75, M]);
    set(gca, 'YTickMode', 'manual', 'YTick', [-50, -40, -1, 0]);
    
    subplot(2,2,3); plot(wwhp/pi, phahp/pi); axis([0, M, -1.1, 1.1]); grid on;
    xlabel('frequency in pi nuits'); ylabel('radians in pi units'); title('Phase Response');
    set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.3, 0.4, 0.6, 0.75, M]);
    set(gca, 'YTickMode', 'manual', 'YTick', [-1:0.5:1]);
    
    subplot(2,2,4); plot(wwhp/pi, grdhp); axis([0, M, 0, 40]); grid on;
    xlabel('frequency in pi units'); ylabel('Samples'); title('Group Delay');
    set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.3, 0.4, 0.6, 0.75, M]);
    set(gca, 'YTickMode', 'manual', 'YTick', [0:10:40]);
    

      运行结果:

               注意,设计的滤波器是阶数为10。频率响应如下图,

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    Document
    JavaScript
    day6 双向循环及pass、break、continue的使用以及for循环
    day5 isinstance&代码块&分支&while循环
    day4:运算符
    day3:强制类型转换&自动类型转换&变量缓存机制
    day2:Number,tuple,str,list,set,dict
    day1:注释和变量
    线段树区间修改+查询区间和
    Prim/Kruskal求最小生成树
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/6741724.html
Copyright © 2020-2023  润新知