Is there a Barcilon-Temes window function that works as well as in harris's classic paper?

1 次查看(过去 30 天)
The batrhewin.m function on the matlab server is not it! harris;s recipe for barcilon-temes doesn't seem to work, but then his recipe for dolph-chebyshev doesn't work either.
  5 个评论
Victor van der Wolf
Read your reply again, here's some aditional info:
My version does use the formula for the frequency domain and then does an idft to construct the filter in the time domain.
a=3.0 --> -48 dB
a=3.5 --> -58 dB
a=4.0 --> -68 dB
So, I'm getting the Harris numbers, except at 3.0. Will we ever get it right?
Paul McKenzie
Paul McKenzie 2016-12-19
编辑:Star Strider 2016-12-19
I finally got a version to work, but I had to add a step to remove the window's pedestal. Then I got the same result that Victor got, namely that harris's result for a=3.0 is optimistic by 5 dB. I think that harris did not oversample the spectrum adequately; if you look at his graph for a=3.0, you can just make out a sidelobe at -48 dB that is mushed into the mainlobe. My Barcilon-Temes function is shown below:
function w=bartemwin(N,a,s)
%w=bartemwin(N,a,s) computes N-pt Barcilon-Temes window with parameter a,
% using procedure from harris's paper, but with pedestal adjustment to 0.
% Comparison of sidelobe levels of this function to harris's results:
% a this function harris
% 3.0 -47.2 dB -53 dB (perhaps -48 dB?)
% 3.5 -57.4 dB -58 dB
% 4.0 -67.6 dB -68 dB
% It appears that harris's result for a=3 may be somewhat optimistic,
% perhaps the result of inadequate oversampling of the spectrum. This is
% consistent with the expectation that an increase of a by 0.5 should lower
% the sidelobe level by about 10 dB.
%INPUTS:
% N # points of window
% a suppression parameter
% s symmetry flag (s==0 is asymmetric, s~=0 is symmetric)
%OUTPUT:
% w N-point Barcilon-Temes window
%P. McKenzie Dec 2016
if nargin<3||isempty(s),s=1;end
B=10^a;C=acosh(B);A=sinh(C);beta=cosh(C/N);
H=(N-1)/2;k=[0:floor(H),-ceil(H):-1].'; %indices for N spectral points
y=N*acos(beta*cos(pi*k/N)); %y(k)
W=(-1).^k.*(A*cos(y)+(B/C)*(y.*sin(y)))./((C+A*B)*(1+(y/C).^2));
W(1)=W(1)-real(sum(W)); %adjust pedestal to 0
if s;W=W.*exp(1j*k*(pi/N));end; %make window symmetric
w=real(ifft(W))*N;w=w/max(w); %ifft to time domain, normalize

请先登录,再进行评论。

回答(2 个)

Star Strider
Star Strider 2016-11-25
Have you seen the File Exchange contribution Window Utilities?

Paul McKenzie
Paul McKenzie 2016-11-28
In Windows Utilities, the only function claiming to be a Barcilon-Temes window is the aforementioned barthewin.m function. While it may be a window, it does not result in sidelobe levels comparable to the results shown in Harris's paper.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by