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

 
 
> Крутизна спада АЧХ
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
 
Start new topic
Ответов
diwil
сообщение Jul 5 2011, 08:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(QuickNick @ Jul 5 2011, 10:12) *
Здравствуйте, товарищи.
У меня возник вопрос по цифровым фильтрам.


совершенно не возможно понять как строится фильтр и в чем вопрос...

В общем случае - в логарифмической шкале все будет хорошо у вас.
Go to the top of the page
 
+Quote Post
QuickNick
сообщение Jul 5 2011, 11:27
Сообщение #3


Участник
*

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



Цитата(diwil @ Jul 5 2011, 11:23) *
совершенно не возможно понять как строится фильтр и в чем вопрос...

Фильтр полосовой, конструируется он следующим образом: даётся вид фильтра (Баттерворта, Чебышева), его порядок, левая и правая частота среза.

Цитата(bahurin @ Jul 5 2011, 12:21) *
при расчете цифрового фильтра шкала частот преобразуется нелинейно через тангенс частоты (подробнее здесь). Кроме того аналоговый прототип, билинейное преобразование которого дает ваш цифровой фильтр также как правило не обладает симметричной АЧХ ввиду того что наиболее широкое распространение получили методы частотного преобразования ФНЧ - полосовой фильтр, которые также нелинейны. Существуют методы позволяющие получить симметричную АЧХ полосового фильтра, но при переходе к цифровому вы все равно исказите ось частот.

Если проведено преобразование Фурье, то, получается, z-преобразование не нужно, так?
Сейчас уточню вопрос.
Есть функция G(w) - АЧХ фильтра. В него подаём вещественную частоту. Как её нужно преобразовать?
Я читаю сейчас книгу Богнера и Константинидиса "Введение в цифровую фильтрацию". На странице 79 вижу таблицу преобразований, но они все применяются к комплексной переменной z - для дальнейшего использования в передаточной функции. А есть ли формулы преобразования именно вещественной частоты? Или как в этих формулах z заменить на w?
Если это невозможно, то тогда такой вопрос. После БПФ мы получаем массив - как я понял, в 2*i-й ячейке содержится действительное значение, в 2*i+1 - мнимое. Как, используя этот массив, можно перейти к z?

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



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

 


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


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