⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firwin.m

📁 滤波器的MATLAB实现程序 内附多个源代码
💻 M
字号:
function [db]=FIRwin(a,b)
choosetype=a;
%1 BARTLETT;2 BLACKMAN; 3 BOXCAR;4 CHEBWIN;5 HAMMING; 6HANN; 7 KAISER; 8 TRIANG
 choose=b;
 %1 lp;2 hp;3bp;4bs
switch choose
case 1    
wp=0.2*pi;
ws=0.4*pi;
width=ws-wp;
wc=(wp+ws)/2;
case 2
 wp=0.4*pi;
ws=0.2*pi;
 width=wp-ws;
 wc=(wp+ws)/2;
case 3
    wsl=0.2*pi;
    wsh=0.8*pi;
    wpl=0.4*pi;
    wph=0.6*pi;
    wcl=(wsl+wpl)/2;
    wch=(wsh+wph)/2;
    width=min((wpl-wsl),(wsh-wpl));
case 4
    wpl=0.2*pi;
    wph=0.8*pi;
    wsl=0.4*pi;
    wsh=0.6*pi;
    wcl=(wsl+wpl)/2;
    wch=(wsh+wph)/2;
    width=min((wsl-wpl),(wph-wsh));
end

N=ceil(6.2*pi/width)+1;
switch choosetype
    case 1
        type=BARTLETT(N);
        titl='BARTLETT';
        wvtool(type);
    case 2
        type=BLACKMAN(N);
        titl='BLACKMAN';
        wvtool(type);
     case 3
        type=BOXCAR(N); 
        titl='BOXCAR';
        wvtool(type);
    case 4
            r=100;
        type=CHEBWIN(N,r);   
        wvtool(type);
        titl='CHEBWIN';
         case 5
        type=HAMMING(N);
        titl='HAMMING';
        wvtool(type);
        case 6
        type=HANN(N);
        titl='HANN';
        wvtool(type);
        case 7
            beta=2.5;
            titl='KAISER';
        type=KAISER(N,beta); 
        wvtool(type);
         case 8
        type=TRIANG(N); 
        titl='TRIANG';
        wvtool(type);
   
end

window=(type)';
n=0:N-1;
tao=(N-1)/2;
switch choose
 case 1
hd=sin(wc*(n-tao))./(pi*(n-tao));
case 2
    hd=[sin(pi*(n-tao))-sin(wc*(n-tao))]./(pi*(n-tao));
case 3
    hd=[sin(wch*(n-tao))-sin(wcl*(n-tao))]./(pi*(n-tao));
case 4
    hd=[sin(wcl*(n-tao))-sin(wch*(n-tao))+sin(pi*(n-tao))]./(pi*(n-tao));
end
h=hd.*window;
[H,w]=freqz(h,[1]);
H=(H(1:501))';
w=(w(1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
plot(w/pi,db);
grid
title(titl);

⌨️ 快捷键说明

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