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

 
 
 
Reply to this topicStart new topic
> Крутизна спада АЧХ
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
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
bahurin
сообщение Jul 5 2011, 09:21
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



при расчете цифрового фильтра шкала частот преобразуется нелинейно через тангенс частоты (подробнее здесь). Кроме того аналоговый прототип, билинейное преобразование которого дает ваш цифровой фильтр также как правило не обладает симметричной АЧХ ввиду того что наиболее широкое распространение получили методы частотного преобразования ФНЧ - полосовой фильтр, которые также нелинейны. Существуют методы позволяющие получить симметричную АЧХ полосового фильтра, но при переходе к цифровому вы все равно исказите ось частот.
Go to the top of the page
 
+Quote Post
QuickNick
сообщение Jul 5 2011, 11:27
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
bahurin
сообщение Jul 5 2011, 17:37
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



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


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


Причем тут вообще преобразование Фурье? Преобразованием Фурье можно расчитать КИХ фильтр, но никак не БИХ (хотя бы потому что у бих фильтра бесконечное количество отсчетов импульсной характеристики) Для расчета БИХ фильтра используют билинейное преобразование аналогового фильтра прототипа. Рекомендую книгу Лем Аналоговые и цифровые фильтры. Там все продробно и с примерами. Таблицы частотных преобразований существуют как для цифровых фильтров, так и для аналоговых, поэтому совершенно не важно как вы будете считать аналоговый фнч прототип - частотное преобразование аналогового фильтра - билинейное преобразование, или аналоговый фнч прототип - билинейное преобразование - частотное преобразование цифрового фильтра, если все правильно сделано результат совпадет.

Хочу только предостеречь, таблицы частотных преобразований для цифровых фильтров попадаются с ошибками, поскольку они громоздки (мне попадалось 2 книги где преобразование фнч-режекторный фильтр было с ошибкой), поэтому я предпочитаю при расчете делать преобразование аналогового прототипа и потом просто билинейное преобразование

И еще для расчета полосового фильтра знать левую и правую частоту среза недостаточно, необходимо задать полный коридор АЧХ или дополнительно к частотам среза задать порядок фильтра.

Сообщение отредактировал bahurin - Jul 5 2011, 17:42
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Jul 5 2011, 18:46
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(QuickNick @ Jul 5 2011, 10:12) *
чтобы подъём и спад имели одинаковую крутизну на любых частотах?

У выбранных Вами фильтров есть понятие "порядок". И в зависимости от порядка крутизна вдали от частоты среза вполне определенная.
1-й порядок -> 6дБ/октаву
2-й порядок -> 12дБ/октаву
3-й порядок -> 18дБ/октаву итд.
А что Вы считаете крутизной? Нарисуйте желаемую характеристику. Учтите нулевая передача может быть только в нескольких отдельных точках, остальное нереализуемо!



--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
QuickNick
сообщение Jul 6 2011, 06:34
Сообщение #7


Участник
*

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



Цитата(bahurin @ Jul 5 2011, 20:37) *
Причем тут вообще преобразование Фурье? Преобразованием Фурье можно расчитать КИХ фильтр, но никак не БИХ (хотя бы потому что у бих фильтра бесконечное количество отсчетов импульсной характеристики) Для расчета БИХ фильтра используют билинейное преобразование аналогового фильтра прототипа.

Чувствую, что витаю очень близко от решения, но пока поймать его не могу.
Вот в этом билинейном преобразовании присутствует переменная s - какая-то комплексная частота. И её мы получаем преобразованием Лапласа. И тут я не могу понять вот что:
1)Преобразование Фурье должно нам возвращать функцию от частоты (вещественной).
2)Преобразование Лапласа возвращает нам функцию от частоты (комплексной).
3)Пишут, что двустороннее преобразование Лапласа эквивалентно преобразованию Фурье.
Но если они эквивалентны, то как в одном случае возвращается вещественная частота и в другом случае - комплексная?
И что это за зверь такой - комплексная частота? Читаю книги по ЦОС - никак не могу уразуметь, что это такое.
Пока догадка такая: если мы получили через БПФ спектр, то коэффициэнты spectre[2*i] == Re(s), а spectre[2*i+1] == Im(s). Так?

Цитата(bahurin @ Jul 5 2011, 20:37) *
И еще для расчета полосового фильтра знать левую и правую частоту среза недостаточно, необходимо задать полный коридор АЧХ или дополнительно к частотам среза задать порядок фильтра.

Я порядок фильтра задаю.

Цитата(SPACUM @ Jul 5 2011, 21:46) *
А что Вы считаете крутизной? Нарисуйте желаемую характеристику. Учтите нулевая передача может быть только в нескольких отдельных точках, остальное нереализуемо!

Не, не то.
Есть АЧХ нормализованных фильтров. И мне нужно, чтобы если у фильтра Баттерворта того же порядка мы изменили частоту среза, то сама форма АЧХ не изменилась, она просто бы переместилась вправо или влево.
А сейчас форма меняется: если частота среза 1, то выглядит как на рисунке. А если частота среза 100, то скорость убывания функции резко уменьшается.
Почему - выше уже описал.
В общих чертах метод частотных преобразований понял, вот только осталось разобраться с таким зверем как "комплексная частота s" и где её отковырять в БПФ.

--- Update ---
С билинейным преобразованием разобрался - что z=th(jwT/2).
И тогда такой вопрос. Z - это комплексная переменная. H(z) - функция комплексного переменного и возвращает комплексное значение.
Но ведь входной спектр X(w) и выходной спектр Y(w) - это у нас вещественные функции.
Как это так получается: Y(w) = X(w)*H(z(w)) - произведение комплексного числа на действительное даёт действительное?

Сообщение отредактировал QuickNick - Jul 6 2011, 10:10
Go to the top of the page
 
+Quote Post
thermit
сообщение Jul 6 2011, 12:35
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
QuickNick:
Y(w) = X(w)*H(z(w)) - произведение комплексного числа на действительное даёт действительное?


Это пипец какой-то...
Ну почитайте же, наконец, книжки по цос... Про спектр, дпф и z-преобразование дискретных последовательностей. Или бросьте это дело вообще.
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Jul 6 2011, 12:46
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(QuickNick @ Jul 6 2011, 10:34) *
И мне нужно, чтобы если у фильтра Баттерворта того же порядка мы изменили частоту среза, то сама форма АЧХ не изменилась, она просто бы leftFrequency = 40 Гц.
rightFrequency = 1000 Гц.

Т.е. если на 40Гц - 40Гц коэффициент передачи ноль, то на 1000Гц + 40Гц тоже должен быть ноль?
Так нет такого Чебышева и Баттерворта тоже. На всех частотах коэффициент больше нуля.
А какой коэффициент должен быть на 1041Гц, на 1042Гц?


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
QuickNick
сообщение Jul 6 2011, 13:54
Сообщение #10


Участник
*

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



Цитата(SPACUM @ Jul 6 2011, 15:46) *
Т.е. если на 40Гц - 40Гц коэффициент передачи ноль, то на 1000Гц + 40Гц тоже должен быть ноль?
Так нет такого Чебышева и Баттерворта тоже. На всех частотах коэффициент больше нуля.
А какой коэффициент должен быть на 1041Гц, на 1042Гц?

Если на 40-10 коэффициэнт передачи 0.2, то и на 1000+10 коэффициэнт передачи 0.2.

Я здесь нашёл частотные преобразования, подставил их в формулу АЧХ - результаты стали гораздо лучше.
На рисунке, конечно, видно, что у нового фильтра АЧХ у левой частоты среза крутизна (модуль 1-й производной) больше, чем у правой частоты, но это приемлемо.
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Jul 6 2011, 17:08
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(QuickNick @ Jul 6 2011, 17:54) *
результаты стали гораздо лучше.

Есть несколько ограничивающих параметров:
1. Чем круче спады, тем длиннее переходной процесс. Кардиографы делают только с фильтрами Бесселя, длинные колебательные процессы после кадждого изменения уровня испортили бы всю диагностику. И цифровые фильтры с длительным переходным процессом делают пожалуй только любители чтобы их заметили. В большинстве случаев быстрота реагирования важнее.
2. Чем круче спады, тем выше чувствительность к изменениям отдельных компонентов фильтра. В аналоговой технике приходится применять очень стабильные емкости и индуктивности, а в цифровой увеличивать разрядность вычислений.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post

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

 


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


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