新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 用matlab設計的IIR濾波器源程序-IIR一階低通/高通

        用matlab設計的IIR濾波器源程序-IIR一階低通/高通

        作者: 時間:2012-03-22 來源:網絡 收藏

        (9)濾波(chebyshev 1)
        % Lowpass Use Chebyshev Type 1
        % copyright by Etual
        clear;
        fs=20;fpass=4;fstop=5;
        Ap=0.5;As=10;
        wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;
        omegap=tan(wp/2);omegas=tan(ws/2);
        ep=sqrt(10^(Ap/10)-1);
        es=sqrt(10^(As/10)-1);
        e=es/ep;w=omegas/omegap;
        N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));
        a=log(1/ep+sqrt(1/ep^2+1))/N;
        omega0=omegap*sinh(a);
        K=floor(N/2);
        theta=zeros(1,K);omega=zeros(1,K);
        for i=1:K
        theta(i)=pi*(N-1+2*i)/(2*N);
        end
        for i=1:K
        omega(i)=omegap*sin(theta(i));
        end
        G=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);
        for i=1:K
        G(i)=(omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);
        end
        for i=1:K
        a1(i)=2*(omega0^2+omega(i)^2-1)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);
        end
        for i=1:K
        a2(i)=(1+2*omega0*cos(theta(i))+omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);
        end
        if K(N/2)
        G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);
        else
        H0=sqrt(1/(1+ep^2));
        end
        f=0:1/300:10;
        Hf2=1./(1+ep^2*(cheby(N,tan(pi*f/fs)/omegap)).^2);
        plot(f,abs(Hf2));
        grid;
        (9)濾波(chebyshev 1)
        % IIR Lowpass Use Chebyshev Type 2
        % copyright by Etual
        clear;
        fs=20;fpass=4;fstop=5;
        Ap=0.5;As=10;
        wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;
        omegap=tan(wp/2);omegas=tan(ws/2);
        ep=sqrt(10^(Ap/10)-1);
        es=sqrt(10^(As/10)-1);
        e=es/ep;w=omegas/omegap;
        N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));
        a=log(es+sqrt(es^2+1))/N;
        omega0=omegas/sinh(a);
        K=floor(N/2);
        for i=1:K
        theta(i)=pi*(N-1+2*i)/(2*N);
        end
        for i=1:K
        omega(i)=omegas/sin(theta(i));
        end
        for i=1:K
        G(i)=(1+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);
        end
        for i=1:K
        a1(i)=2*(1-omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);
        end
        for i=1:K
        a2(i)=(1+2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);
        end
        for i=1:K
        b1(i)=2*(1-omega(i))/(1+omega(i));
        end
        if K(N/2)
        G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);
        else
        H0=sqrt(1/(1+ep^2));
        end
        f=(0+eps):1/100:10;
        Hf2=(cheby(N,omegas./tan(pi*f/fs))).^2./((cheby(N,omegas./tan(pi*f/fs))).^2+es^2);
        plot(f,abs(Hf2));
        grid;

        (10)chebyshev 中用到的函數 cheby.m
        function CN=cheby(N,x)
        if x=1
        CN=cos(N*acos(x));
        else
        CN=cosh(N*log(x+sqrt(x.^2-1)));
        end

        濾波器相關文章:濾波器原理


        濾波器相關文章:濾波器原理


        低通濾波器相關文章:低通濾波器原理


        電源濾波器相關文章:電源濾波器原理


        高通濾波器相關文章:高通濾波器原理
        數字濾波器相關文章:數字濾波器原理

        上一頁 1 2 3 下一頁

        關鍵詞: IIR matlab 濾波器 低通

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 策勒县| 兴业县| 彰化县| 龙州县| 阿拉善右旗| 铁岭市| 揭东县| 肇州县| 滨州市| 丽江市| 龙陵县| 衢州市| 夏邑县| 丹凤县| 盈江县| 福海县| 外汇| 巴马| 石泉县| 万盛区| 玉山县| 固始县| 任丘市| 基隆市| 称多县| 建湖县| 彰化县| 临桂县| 通化市| 松潘县| 永和县| 郑州市| 广河县| 赤峰市| 进贤县| 泽普县| 红河县| 会泽县| 宁蒗| 陵川县| 宜黄县|