ht3.m

来自「matla窗口制作」· M 代码 · 共 163 行

M
163
字号
function ht3(h_axes1,N,mm,b1,Ws,Wp,Wph,Wsh,c,d)
N=floor(N);
%delta_w=2*pi/1000;
%Ap=-(min(db(Wp*pi/delta_w+1:1:501)));
%syms c;
if mm==1 
    n=[0:1:N-1];
    wc=((Ws+Wp)/2)*pi;
    Wcl=wc;
    Wch=((Wph+Wsh)/2)*pi;
    if b1==1
        if d==1
        hd=ideal_lp1(wc,N);
        elseif d==2
        hd=ideal_lp2(wc,N);
        end
    elseif  b1==2
        if  d==1
        hd=ideal_hp1(wc,N);
        else d==2
        hd=ideal_hp2(wc,N);
        end
    elseif  b1==3
        if d==1
        hd=ideal_bp1(Wcl,Wch,N);
        elseif d==2
        hd=ideal_bp2(Wcl,Wch,N);
        end
    elseif  b1==4
        hd=ideal_bs(Wcl,Wch,N);
    end
    h=(bartlett(N))';
    h=hd.*h;
    [dp,mag,pha,grd,w]=freqz_m(h,[1]);
    %h=abs(h);
elseif mm==2
   n=[0:1:N-1];
    wc=((Ws+Wp)/2)*pi;
    Wcl=wc;
    Wch=((Wph+Wsh)/2)*pi;
    if b1==1
        if d==1
        hd=ideal_lp1(wc,N);
        elseif d==2
        hd=ideal_lp2(wc,N);
        end
    elseif  b1==2
        if  d==1
        hd=ideal_hp1(wc,N);
        else d==2
        hd=ideal_hp2(wc,N);
        end
    elseif  b1==3
        if d==1
        hd=ideal_bp1(Wcl,Wch,N);
        elseif d==2
        hd=ideal_bp2(Wcl,Wch,N);
        end
    elseif  b1==4
        hd=ideal_bs(Wcl,Wch,N);
    end
    h=(blackman(N))';
    h=hd.*h;
    [dp,mag,pha,grd,w]=freqz_m(h,[1]);
    %h=abs(h);
elseif mm==3
    n=[0:1:N-1];
    wc=((Ws+Wp)/2)*pi;
    Wcl=wc;
    Wch=((Wph+Wsh)/2)*pi;
    if b1==1
        if d==1
        hd=ideal_lp1(wc,N);
        elseif d==2
        hd=ideal_lp2(wc,N);
        end
    elseif  b1==2
        if  d==1
        hd=ideal_hp1(wc,N);
        else d==2
        hd=ideal_hp2(wc,N);
        end
    elseif  b1==3
        if d==1
        hd=ideal_bp1(Wcl,Wch,N);
        elseif d==2
        hd=ideal_bp2(Wcl,Wch,N);
        end
    elseif  b1==4
        hd=ideal_bs(Wcl,Wch,N);
    end
    h=(hamming(N))';
    h=hd.*h;
    [dp,mag,pha,grd,w]=freqz_m(h,[1]);
    %h=abs(h);
elseif mm==4
    n=[0:1:N-1];
    wc=((Ws+Wp)/2)*pi;
    Wcl=wc;
    Wch=((Wph+Wsh)/2)*pi;
    if b1==1
        if d==1
        hd=ideal_lp1(wc,N);
        elseif d==2
        hd=ideal_lp2(wc,N);
        end
    elseif  b1==2
        if  d==1
        hd=ideal_hp1(wc,N);
        else d==2
        hd=ideal_hp2(wc,N);
        end
    elseif  b1==3
        if d==1
        hd=ideal_bp1(Wcl,Wch,N);
        elseif d==2
        hd=ideal_bp2(Wcl,Wch,N);
        end
    elseif  b1==4
        hd=ideal_bs(Wcl,Wch,N);
    end
    h=(hanning(N))';
    h=hd.*h;
    [dp,mag,pha,grd,w]=freqz_m(h,[1]);
    %h=abs(h);
 end 
    axes(h_axes1);
    cla;
    if c==1
    plot(w/pi,dp,'b');
    axis([0,1,-200,10]);
    grid on;
%    set(h_axes1,'Color',[1 1 1]);
    title(' Window Magnitude Response');
    xlabel('Normalized Frequency(*pi rad/sample)');
    ylabel('Magnitude(dB)');
    elseif c==2
    axes(h_axes1);
    cla;
    plot(w/pi,pha/pi,'b');
    grid on;
    title(' Window phase Response');
    xlabel('Frequency(*pi rad/sample)');
    ylabel('phase(pi)');
    elseif c==3
    axes(h_axes1);
    cla;
    stem(n,h);
    grid on;
    title('Impulse Response');
    xlabel('Time');
    ylabel('Amplitude');
    %elseif c==4
    %axes(h_axes1);
    %cla;
    %stepz(h);
    %grid on;
    %title('Step Response');
    %xlabel('Time');
    %ylabel('Amplitude');
    end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?