📄 winwind.m
字号:
function w = winwind(typ,n,a)
% WINWIND Support file for FIRGUI
% ADSP Toolbox: Version 2.0
% For use with "Analog and Digital Signal Processing", 2nd Ed.
% Published by PWS Publishing Co.
%
% Ashok Ambardar, EE Dept. MTU, Houghton, MI 49931, USA
% http://www.ee.mtu/faculty/akambard.html
% e-mail: akambard@mtu.edu
% Copyright (c) 1998
n1 = n-1;
nn = fix(n1/2);
n0 = nn:-1:0;
if rem(n,2) == 0,
n0 = n0 + .5;
end,
t = 0:nn;
m = 2*pi*t/n1;
if typ == 1, % hamming
w = .54 - .46*cos(m);
elseif typ == 2, % vonHann
w = .5*(1 - cos(m));
elseif typ == 3, % blackman
w = .42-.5*cos(m)+.08*cos(2*m);
elseif typ == 4, % kaiser
a = a*pi;
nn = fix((n-1)/2);
n0 = nn:-1:0;
if rem(n,2) == 0, n0 = n0 + .5; end
beta = a*sqrt(1-4*(n0/(n-1)).^2);
b = besseli(0,[beta a]);
w = b(1:nn+1)/b(nn+2);
w = real(w);
elseif typ == 5, % chebyshev
nn = fix((n-1)/2);
e = 10^(-a/20);
m = 2*nn;
b = cosh(acosh(1/e)/m);
f = b*cos(pi*(1:m)/m);
d = zeros(1,m);
i1 = find(abs(f)<=1);
i2 = find(f>1);
i3 = find(f<-1);
if ~isempty(i1), d(i1) = cos(m*acos(f(i1))); end
if ~isempty(i2), d(i2) = cosh(m*acosh(f(i2))); end
if ~isempty(i3), d(i3) = ((-1)^m)*cosh(m*acosh(-f(i3))); end
w = fft(d);
w = abs(w(nn+1:-1:1)/w(1));
w(1) = w(1)/2;
elseif typ == 6 % Harris ,
if a==0,b=[.375 .5 .125 0];end
if a==1,b=[10/32 15/32 6/32 1/32];end
if a==2,b=[.40897 .5 .09103 0];end
if a==3,b=[.42323 .49755 .07922 0];end
if a==4,b=[.4243801 .4973406 .0782793 0];end
if a==5,b=[.338946 .481973 .161054 .018027];end
if a==6,b=[.355768 .487396 .144232 .012604];end
if a==7,b=[.3635819 .4891775 .1365995 .0106411];end
w = b(1)-b(2)*cos(m)+b(3)*cos(2*m)-b(4)*cos(3*m);
end
w = [w w(nn+1-rem(n,2):-1:1)];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -