Методом наименьших квадратов: в частотной области берется сетка w_k на порядок "плотнее" чем окно, на ней задается целевая функция target_k, и решается переопределенная система, примерно такого вида: target_k = sum_i(cos(i*w_k)*coeff_i)), где число заданных пар [target_k, w_k] на порядок больше числа искомых coeff_i. Необязательно брать равномерную сетку: например для обычного окна можно взять нулевую частоту и полосу подавления, игнорируя главный лепесток. Если добавить веса для целевой функции, то этот метод можно существенно усилить, вплоть до того, что критерий минимизации квадратов ошибки (L-2) комбинируется с каким-то другим, например L-inf, как при Чебышевской интерполяции. Для последнего случая рабочий матлаб код можно взять из Mathias Lang, “Algorithms for the Constrained Design of Digital Filters with Arbitrary Magnitude and Phase Responses”.
|