soldat_shveyk прав в том что поскольку АЧХ окна является приближением к дельта-функции, то окно можно рассматривать и рассчитывать как НЧ КИХ фильтр, который подавляет все частоты кроме постоянной составляющей. Вот только если бы можно было в частотной области нарисовать произвольный отклик, то вообще не надо было бы париться с книгами по ЦОС. Как правило, удается получить только приближение к желаемому отклику. При использовании МНК для этого составляется система уравнений A X = Y, где X – вектор искомых коэффициентов окна во временной области, А – матрица с N столбцами и M строками. N = длина окна, M выбирается примерно на порядок больше N.
Каждая строка матрицы А вычисляет частотный отклик на одной из M заданных частот. Иными словами, она переводит вектор X из временной области в частотную. Поскольку искомое окно X обладает четной симметрией, можно ограничиться только косинусами, в этом случае желаемый отклик Y определяется действительными числами. Элемент матрицы А на пересечении строки r и столбца c зависит только от нужной частоты, и равен cos((c+0.5*N) * freq[r]); где частота строки freq[r] задается в радианах. Например, при равномерной сетке freq[r] = PI*r/M (здесь используется симметрия в частотной области – в уравнениях участвуют только положительные частоты). В принципе можно также использовать симметрию окна во временной области, но в этом случае четные и нечетные N будут обрабатываться немного по разному, проще считать все окно, сдвинутое так, чтобы середина приходилась на 0, для чего добавляем (+0.5*N).
Если какая-то частота более «важна» чем другие, каждый элемент строки, соответствующей этой частоте, и соответствующий отклик Y[r] умножаются на соответствующий «важности» вес > 1.
Система решается стандартными численными методами, в результате получается вектор X, с частотным откликом, максимально близким к заданному Y в смысле наименьших квадратов. Если полученный отклик не удовлетворяет каким-то дополнительным ограничениям, можно повторить всю процедуру, увеличив вес тех частот, на которых отклик выходит за ограничения.
По возможности, систему лучше решать через ортогональные преобразования: при увеличении уровня подавления обусловленность системы может ухудшиться. В качестве грубой прикидки могу сказать что даблов хватает на 60-90 дБ при использовании нормальных уравнений и больше 150 дБ при QR преобразовании.
|