реклама на сайте
подробности

 
 
> Крутизна спада АЧХ
QuickNick
сообщение Jul 5 2011, 06:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 1-07-11
Пользователь №: 66 006



Здравствуйте, товарищи.
У меня возник вопрос по цифровым фильтрам.

Я строю полосовой фильтр:
Код
    public final double getValue(double w) {
        if (w < (leftFrequency + rightFrequency) / 2) {
            return getHighPassValue(w);
        } else {
            return getLowPassValue(w);
        }
    }

    protected final double getLowPassValue(double w) {
        return getIntermediateValue(w / rightFrequency);
    }

    protected final double getHighPassValue(double w) {
        return getIntermediateValue(leftFrequency / w);
    }

    protected abstract double getIntermediateValue(double w);

Ну а в реализациях фильтра последняя функция возвращает значение нормализованного фильтра (частота среза = 1 Гц).
Так вот, я строил график и заметил, что график получается отнюдь не симметричным. В районе leftFrequency АЧХ взмывает вверх быстрее, чем в районе АЧХ убывает.
Приведу конкретный пример.
leftFrequency = 40 Гц.
rightFrequency = 1000 Гц.
G(leftFrequency+20) = 0.99; G(rightFrequency-20) = 0.62;
Непосредственные причины понятны: отношение 40/60 куда меньше 980/1000. В нормализации всё дело.

А вот как сделать правильную нормализацию, чтобы подъём и спад имели одинаковую крутизну на любых частотах?
Возможно, при этом нужно будет поменять тело getValue().

Сообщение отредактировал QuickNick - Jul 5 2011, 06:12
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 11:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016