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

📄 kaiser.m

📁 四种窗函数设计FIR数字滤波器matlab源码(hant,hamming,blackman,kaiser)
💻 M
字号:
format short e;
wp=2*pi*3000;
wa=2*pi*5000;
ws=2*pi*20000;
k1=1; 
k2=30;
dert1=(10^(0.05*k1)-1)/(10^(0.05*k1)+1);
dert2=10^(-0.05*k2);
dert=min(dert1,dert2);
Aa=-20*log10(dert);
if Aa<=21
    alpha=0,D=0.9222;
else if (Aa>21)&&(Aa<=50)
        alpha=0.5842*((Aa-21)^0.4)+0.07886*(Aa-21),D=(Aa-7.95)/14.36;
    else alpha=0.1102*(Aa-8.7),D=(Aa-7.95)/14.36;
    end
end
Bt=wa-wp;
wc=0.5*(wa+wp);
Nmin=ceil((ws*D)/Bt+1);
disp('Nmin='),disp(Nmin);
N=input('N=');
n=[0:1:N-1];
m=n+eps;
T=2*pi/ws;
hd=sin(wc*m*T)./(pi*m);
for k=1:1:200;
    A(k)=(1/factorial(k)*((alpha/2)^k))^2;
end
I_alpha=1+sum(A);
beta=zeros(1,ceil(N/2));
Matrix_B=zeros(ceil(N/2),200);
I_beta=zeros(1,ceil(N/2));
for n=1:1:ceil(N/2);
    beta(n)=alpha*sqrt(1-(2*(n-1)/(N-1))^2);
    for k=1:1:200;
Matrix_B(n,k)=((1/factorial(k)*((beta(n)/2)^k))^2);
    end
    I_beta(n)=1+sum(Matrix_B(n,:));
end
wn=I_beta./I_alpha;
Wn=[wn zeros(1,N-length(wn))];
hn=hd.*Wn;
L=length(wn);
hn_r=zeros(1,L);
for l=1:1:L;
    hn_r(l)=hn(1,l);
end
hn_fliplr=fliplr(hn_r);
if floor(N/2)==(N-1)/2; %N is odd;
    hn_l=zeros(1,L-1);
    for k=1:1:L-1;
        hn_l(k)=hn_fliplr(1,k);
        hn=[hn_l hn_r];
    end
else hn=[hn_fliplr, hn_r];
end
wn_r=wn
wn_fliplr=fliplr(wn);
    wn_l=zeros(1,L-1);
    for k=1:1:L-1;
        wn_l(k)=wn_fliplr(1,k);
        wn=[wn_l wn_r];
    end
n=[0:1:N-1];
subplot(2,1,1),stem(n,wn);
xlabel('n');ylabel('W_k(n)');
grid on;
n=0:1:N-1;
subplot(2,1,2),stem(n,hn);
xlabel('n'); ylabel('h(n)');
grid on

    

⌨️ 快捷键说明

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