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