yading@11: function y = genbh92lobe(x) yading@11: % Calculate transform of the Blackman-Harris 92dB window yading@11: % x: bin positions to compute (real values), y: transform values yading@11: N = 512; yading@11: f = x*pi*2/N; % frequency sampling yading@11: df = 2*pi/N; yading@11: y = zeros(size(x)); % initialize window yading@11: consts = [.35875, .48829, .14128, .01168]; % window constants yading@11: for m=0:3 yading@11: y = y + consts(m+1)/2*(D(f-df*m,N)+D(f+df*m,N)); % sum Dirichlet kernels yading@11: end yading@11: y = y/N/consts(1); % normalize yading@11: end yading@11: function y = D(x,N) yading@11: % Calculate rectangular window transform (Dirichlet kernel) yading@11: y = sin(N*x/2)./sin(x/2); yading@11: y(find(y~=y))=N; % avoid NaN if x==0 yading@11: end