Первоисточником считается статья 1946 года C.L.Dolph "A Current Distribution for Broadside Arrays Which Optimizes the Relationship Between Beam Width and Side-Lobe Level"
Код
#define acosh(x) (log((x) + sqrt((x) * (x) - 1)))
void DolphChebyshev (double * win, int n, double db)
{
int i, j, m = n-1;
for (j = 0; j < n; j++)
{
win[j] = 0;
for (i = 0; i < n; i++)
{
double t = PI*(i - m*.5)/n;
double x = cosh(acosh(pow(10, db / 20)) / m) * cos(t);
double w = fabs(x) <= 1.0 ? cos(m * acos(x)) : cosh(m * acosh(x));
win[j] += w * cos(t*(j - m*.5)*2);
}
}
double scale = 1./win[n/2];
for (i = 0; i < n; i++)
{
win[i] *= scale;
}
}
Пример: рассчитать окно на 256 отсчетов с подавлением 100 дб
double win[256];
DolphChebyshev(win, 256, 100);