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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Коэффициент усиления цифрового фильтра
Verizon
сообщение Feb 12 2016, 10:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Имеется структурная схема алгоритма цифровой обработки информации в которой есть цифровые КИХ фильтры. Данные на отдельный фильтр поступают в формате 12 бит со знаком. Коэффициенты в формате 16 бит со знаком. Как в этом случае рассчитывается коэффициент усиления такого фильтра?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 11:20
Сообщение #2





Guests






Коэффициент усиления не имеет отношения к разрядности и формату и задается на этапе проектирования фильтра.
В процессе трансформации разрядности вы можете выбрать коэффициент масштабирования самостоятельно.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 12:33
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 12 2016, 13:20) *
Коэффициент усиления не имеет отношения к разрядности и формату и задается на этапе проектирования фильтра.
В процессе трансформации разрядности вы можете выбрать коэффициент масштабирования самостоятельно.

Спасибо. Да, масштабирование это понятно. Но в принципе как считается коэффициент усиления КИХ? Я так полагаю, что необходимо просуммировать разрядность, кроме знака и учесть число ненулевых коэффициентов. Тоесть если сигнал имеет разрядность 12 бит со знаком, а коэффициенты имеют разрядность 16 бит со знаком и предположим что число ненулевых коэффициентов 25 (вмещается в 2 в степени 5), то выходная разрядность должна быть 12 + 16 + 5 = 33. Поскольку знаковый разряд один для всех то получается 32 бита. Тоесть если предположить, что сигнал который имеет заполнение все 12 бит подать на фильтр то на выходе он возрастет на 20 бит 32 - 12. Если считать каждый разряд как 6 dB то получится 6*20 = 120 dB. Это при условии, что коэффициенты по модулю имеют максимальные значения в пределах 16 бит.

Я сомневаюсь в таких рассуждениях. Поскольку не все коэффициенты имеют значения по модулю с заполнением 16 бит. Только некоторые. И вообще не понятно во сколько раз в этом случае (при указанных выше данных) увеличится сигнал... Кому не лень, подскажите пожалуйста популярно как все считается.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 12 2016, 12:47
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



По-моему, нужно сложить все коэффициенты КИХ, без учета знака. На какой-то частоте они все сложатся со знаком +. Это и будет коэффициент усиления фильтра.
А разрядность - это другое.
При желании, можете пропорционально изменить все коэффициенты, чтобы получить нужное усиление. Например, 1. На форме АЧХ это не скажется.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 13:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(ViKo @ Feb 12 2016, 14:47) *
По-моему, нужно сложить все коэффициенты КИХ, без учета знака. На какой-то частоте они все сложатся со знаком +. Это и будет коэффициент усиления фильтра.
А разрядность - это другое.
При желании, можете пропорционально изменить все коэффициенты, чтобы получить нужное усиление. Например, 1. На форме АЧХ это не скажется.

Спасибо. Допустим имеются коэффициенты
Код
Коэффициенты фильтра: const int16_T B[51] = {
           0,        116,            0,      -214,            0,        354,            0,       -540,            0,
       772,            0,    -1042,            0,      1339,            0,     -1645,            0,      1939,
           0,    -2199,            0,      2403,            0,     -2533,            0,      2577,            0,
   -2533,            0,      2403,            0,     -2199,            0,      1939,            0,     -1645,
          0,      1339,            0,     -1042,            0,        772,             0,      -540,             0,
      354,            0,        214,             0,       116,            0
};

Явно, что они симметричны. Если сложить все без знака будет 17673. Достаточно круто. Получается, что если на вход фильтра подать сигнал уровнем 1 то он должен увеличиться на 17673 на нужной частоте?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 13:35
Сообщение #6





Guests






Цитата(Verizon @ Feb 12 2016, 15:33) *
Я сомневаюсь в таких рассуждениях.


Правильно делаете - надо отделять "котлеты от мух" и заниматься правильным проектированием, начиная с физических данных.

1. На основе данных о сигнале определяются:
- физический предельный диапазон сигнала;
- отношение сигнал шум;
- возможность предварительной аналоговой фильтрации для его повышения;
- применение аналогового антиалис-фильтра;
- выбор АЦП по разрядности и быстродействию и C/Ш.

2. На основе требований к ЦОС определяется та или иная динамическая система ( к примеру - ФНЧ ).
Выполняется математическое проектирование ФНЧ и определяется потенциал перерегулирования ( на основе step-функции ).
В общем случае, все равно потребуется выяснение предельных режимов работы ДС.

3. На основе требования к быстродействию и другим параметрам делается выбор аппаратной платформы и принимается решение о вычислениях в той или иной сетке в том или ином формате.
Если float-формат - тут все спокойней и ближе к чистой математике.
Если выбран фиксированная точка - тут свои ньюансы.
Если целочисленный формат - тут во все тяжкие sm.gif

К примеру, выбран АЦП 12 р. С учетом разрядности платформы операции могут выполняться аппаратно на 16р и программно - кратно 16р.
К примеру: имеется умножитель аппаратный 16x16=32
Для большей точности вычислений целесообразно использовать представление входных данных 12р как подмножество 16р, вычисления выполнять в максимальном варианте ( аккумулятор на 32р), а результат выдавать в 16р, но в диапазоне входных данных 12р.

С учетом возможного перерегулирования ( к примеру ФНЧ Баттерворта имеет до 20%) - мы могли бы выдавать в формате значащих 13р и не имели бы переполнения.
Ну а так, имеет смысл выдавать в формате 16р в соответствии с возможностями платформы по интерфейсу.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 12 2016, 13:36
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Verizon @ Feb 12 2016, 16:22) *
Если сложить все без знака будет 17673. Достаточно круто. Получается, что если на вход фильтра подать сигнал уровнем 1 то он должен увеличиться на 17673 на нужной частоте?

Да. Можно сообразить, что умножение, например, на 2577 даром не пройдет. rolleyes.gif
Можно просто иначе интерпретировать разряды в выходных данных, чтобы вернуться к 1.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 13:39
Сообщение #8





Guests






Цитата(Verizon @ Feb 12 2016, 16:22) *
Спасибо. Допустим имеются коэффициенты
Явно, что они симметричны. Если сложить все без знака будет 17673. Достаточно круто. Получается, что если на вход фильтра подать сигнал уровнем 1 то он должен увеличиться на 17673 на нужной частоте?


Нет, не так. Если 1 - это максимальный возможный сигнал, то выполните последовательное суммирование коэффициентов и, после каждой суммы, смотрите на частный результат. Это будет реакцией на step-функцию. После завершения переходного процесса, вы получите некоторую сумму, которая и будет gain на нулевой частоте.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 12 2016, 13:41
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(TSerg @ Feb 12 2016, 16:39) *
После завершения переходного процесса, вы получите некоторую сумму, которая и будет gain на нулевой частоте.

Но на некой другой частоте gain будет больше.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 14:05
Сообщение #10





Guests






Цитата(ViKo @ Feb 12 2016, 16:41) *
Но на некой другой частоте gain будет больше.


Да, конечно. Для этого и надо знать изначальную задачу. Судя по коэфф. - это некий резонансный фильтр с небольшим остатком gain на постоянке ( если только это не погрешности вычисления коэф. )

Реакция на step-функцию:
Прикрепленное изображение


Остаток = 505, что дает gain(0) = 505/(2^16-1) =~ 0.008
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 14:10
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата
Судя по коэфф. - это некий резонансный фильтр с небольшим остатком gain на постоянке

Это полосовой фильтр с окном Чебышева.
Цитата(TSerg @ Feb 12 2016, 15:39) *
Нет, не так. Если 1 - это максимальный возможный сигнал, то выполните последовательное суммирование коэффициентов и, после каждой суммы, смотрите на частный результат. Это будет реакцией на step-функцию. После завершения переходного процесса, вы получите некоторую сумму, которая и будет gain на нулевой частоте.

Я предположил, что 1 это минимально возможный сигнал. Максимально возможный при 12 битах данных со знаком 2048. При данных коэффициентах насколько возрастет эта 1? Если сложить все коэффициенты то получится больше чем 84 dB (> 17000 раз). Очевидно это не верно. А как верно?

Сообщение отредактировал Verizon - Feb 12 2016, 14:11
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 14:27
Сообщение #12





Guests






Еще раз, не имеет смысла говорить в терминах платформы, алгоритмов вычисления, принятой сетки и формата данных о каком либо коэффициенте усиления.
Ваша задача - не допустить переполнения сетки. Исходить нужно из вышесказанного, т.е. определить наихудший вариант для аккумулятора.
После умножения: 12+16=28. Число значимых коэффициентов у Вас 26 ( принимаем 2^5 = 32 < 26). Т.е. теоретический максимум аккумулятора 28 + 5 = 33 бит, что почти укладывается в акк. 32 бит. В реальности, с учетом ограниченности значений коэффициентов (< 2^16) и их числа (26<32) - укладка в 32р обеспечена.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 14:40
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 12 2016, 16:27) *
Еще раз, не имеет смысла говорить в терминах платформы, алгоритмов вычисления, принятой сетки и формата данных о каком либо коэффициенте усиления.
Ваша задача - не допустить переполнения сетки. Исходить нужно из вышесказанного, т.е. определить наихудший вариант для аккумулятора.
После умножения: 12+16=18. Число значимых коэффициентов у Вас 26 ( принимаем 2^5 = 32 < 26). Т.е. теоретический максимум аккумулятора 18 + 5 = 23 бит, что укладывается с большим запасом в акк. 32 бит.

12+16 = 28, 28+5 = 33. Поскольку знаковый бит один для всех то 32 бита. Это понятно. И тем не менее если предположить, что на цифровой фильтр с известным набором коэффициентов подан сигнал в формате 12 бит со знаком. Выходной сигнал с фильтра имеет формат 32 бита со знаком. Грубо во сколько раз возрастет сигнал на выходе фильтра по отношению ко входу?

Сообщение отредактировал Verizon - Feb 12 2016, 14:44
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 14:50
Сообщение #14





Guests






Что тут непонятного?

У Вас есть (к примеру) всеполосный КИХ-фильтр ( длиной K taps ), т.е. все коэффициенты = 1 ( в терминах сетки M, к примеру)
Есть входной сигнал разрядностью N.
Задача - сохранить динамический диапазон.

Используем умножитель M * N, (при желании можно и M * M, без ограничения сказанного)
Разрядность на выходе умножителя MN = M + N
Поскольку необходимо накопить в аккумуляторе за время одного цикла K-значений с разрядностью MN, то необходимо иметь разрядность аккумулятора больше или равной R = MN + T, где T >= log2(K)

После вычисления суммы можно использовать результат с разрядностью от N и выше.

P.S.
Это максималистский подход.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 15:00
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 12 2016, 16:50) *
Что тут не понятного?

У Вас есть (к примеру) всеполосный КИХ-фильтр ( длиной K taps ), т.е. все коэффициенты = 1 ( в терминах сетки M, к примеру)
Есть входной сигнал разрядностью N.
Задача - сохранить динамический диапазон.

Используем умножитель M * N
Разрядность на выходе умножителя MN = M + N
Поскольку необходимо накопить в аккумуляторе за время одного цикла K-значений с разрядностью MN, то необходимо иметь разрядность аккумулятора больше или равной R = MN + T, где T >= log2(K)

После вычисления суммы можно использовать результат с разрядностью от N и выше.

С разрядностью все понятно. Вопрос в том как определить на сколько возрастет сигнал на выходе фильтра по отношению ко входу при данных конкретных коэффициентах.
Код
Коэффициенты фильтра: const int16_T B[51] = {
           0,        116,            0,      -214,            0,        354,            0,       -540,            0,
       772,            0,    -1042,            0,      1339,            0,     -1645,            0,      1939,
           0,    -2199,            0,      2403,            0,     -2533,            0,      2577,            0,
   -2533,            0,      2403,            0,     -2199,            0,      1939,            0,     -1645,
          0,      1339,            0,     -1042,            0,        772,             0,      -540,             0,
      354,            0,        214,             0,       116,            0
};

Явно, что при другом наборе коэффициентов картина изменится.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 15:34
Сообщение #16





Guests






Ви так ничего и не поняли.

Цитата(Verizon @ Feb 12 2016, 18:00) *
С разрядностью все понятно.


Сомневаюсь, сильно.

Цитата(Verizon @ Feb 12 2016, 18:00) *
Явно, что при другом наборе коэффициентов картина изменится.


Конечно, но Вам были предоставлены несколько вариантов: от Viko - конкретный, от меня - максималистский (в общем) и еще один:

См. максималистский, с уточнениями:
Вместо 2^16 (в максимальном по разрядности Вашем случае), используем для конкретного случая набора коэффициентов - максимальный по модулю коэффициент и полагаем его константой на все K-taps.

Что это дает, для Вашего случае, смотрим далее:

Максимальный коэффициент по модулю: 2577
Максимальное входное число (12р): 2047
Максимальное произведение: 2577*2047 = 5 275 119
Максимальная сумма ( с учетом 26-ти ненулевых const коэффициентов = 2577 ) = 26 * 5 275 119 = 137 153 094
Число потребных разрядов для аккумулятора:
N = logN(26*2577*2047;2) = 27,03

Как их интерпретировать и сколько оставить - это Ваша задача.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 17:17
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 12 2016, 17:34) *
Конечно, но Вам были предоставлены несколько вариантов: от Viko - конкретный, от меня - максималистский (в общем) и еще один:

Больше подходит конкретный. Получается коэффициент усиления порядка 17 000. Круто.
Если сделать масштабирование и выбросить младшие 12 бит то 17 000 необходимо поделить на 2^12 или на 4096 Получится 4. Если это так то вопрос с коэффициентом усиления цифрового фильтра ясен.

Сообщение отредактировал Verizon - Feb 12 2016, 17:18
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 12 2016, 19:06
Сообщение #18





Guests






Вы опять о чем-то своем.. ну да ладно.
Нет понятия "коэффициент усиления" для цифровой системы из-за разрядности данных или операций.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 12 2016, 19:22
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Verizon @ Feb 12 2016, 20:17) *
Больше подходит конкретный. Получается коэффициент усиления порядка 17 000. Круто.
Если сделать масштабирование и выбросить младшие 12 бит то 17 000 необходимо поделить на 2^12 или на 4096 Получится 4. Если это так то вопрос с коэффициентом усиления цифрового фильтра ясен.

Вам нужно в Матлабе промоделировать. Или в другом симуляторе фильтров.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 12 2016, 20:08
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 12 2016, 21:06) *
Вы опять о чем-то своем.. ну да ладно.
Нет понятия "коэффициент усиления" для цифровой системы из-за разрядности данных или операций.

Может и нет. Это условность. Но необходимая.
Вообще спасибо за полезную информацию.
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 12 2016, 22:53
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Ваши космические коэффициенты фильтра образуются из того, что вы считаете диапазоном 16-разрядного знакового числа -32768...+32767. Тогда как в ЦСП имеется понятие формата с фиксированной точкой. Для формата 1.15 диапазон будет -1...+1. Пересчитайте свои целые коэффициенты в этот формат, и усиление станет порядка 1.
Так что "усиление" - действительно условность, зависящая от выбора формата.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 13 2016, 11:36
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(V_G @ Feb 13 2016, 00:53) *
Ваши космические коэффициенты фильтра образуются из того, что вы считаете диапазоном 16-разрядного знакового числа -32768...+32767. Тогда как в ЦСП имеется понятие формата с фиксированной точкой. Для формата 1.15 диапазон будет -1...+1. Пересчитайте свои целые коэффициенты в этот формат, и усиление станет порядка 1.
Так что "усиление" - действительно условность, зависящая от выбора формата.

Тоесть Вы хотите сказать, что такого понятия как "усиление" в цифровой системе в принципе не существует? Я тоже с этим согласен. Посоветуйте пожалуйста как популярно и коротко убедить в этом старшего коллегу, который зациклился на этом "усилении". Я так понимаю, что цифровая система она в принципе ничего не усиливает. Хотя полосовой КИХ вроде как и усиливает...? Если не сложно поясните пожалуйста как правильно все можно обставить это так называемое цифровое "усиление". Если можно, что такое формат 1.15 ?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 13 2016, 12:33
Сообщение #23





Guests






Все очень просто: усиление присуще только аналоговым системам.
Термин "усиление", которым оперируют в ЦОС (т.е. на уровне дискретного сигнала) - на самом деле, это масштабирование, поскольку при этом не порождается новых значений на выходе в промежутке между исходными значениями на входе.
Да, можно говорить об интерполяции и пере-дискретизации, но это искусственные приемы, которые только предполагают, что так оно будет в промежутке между дискретами.

При проектировании цифровых фильтров, да, может использоваться термин "усиление", но на стадии математических выкладок.
Пример.

Простейший рекурсивный ФНЧ первого порядка описывается разностным уравнением:

Y[i] = a * Y[i-1] + b * X[i] (1)

Как правило, принимается a + b = 1. В этом случае, коэффициент усиления (передачи) на нулевой частоте K(0) = 1.

Предположим, мы выбрали ( по тем или иным соображениям и это известно, как выбирать):
a = 0.1
b = 0.9

Предположим, что у нас сетка 16р, включая знак.
В этом случае, масштабный множитель для перевода из десятичной системы в целочисленную равен 2^15-1 = 32767

Тогда:
a = 0.1 * 32767 = 3276.7 = 3277
b = 0.9 * 32767 = 29490.3 = 29490
В целочисленной сумме a + b = 32767, что эквивалентно К(0) = 1 (коэффициент передачи на нулевой частоте)

Алгоритм вычисления реакции фильтра:
Y[i] = 3277 * Y[i-1] + 29490 * X[i]

Можно ли назвать числа 3277 и 29490 коэффициентами усиления по конкретной переменной? Назвать-то можно, только это уже кодирование и к математике оно имеет относительное отношение.

Предположим входной сигнал имеет дискретность 12р, включая знак. Т.е. максимальные входные числа: (+/-) 2047
Можно ли сказать, что в результате умножения 2047 на 3277 мы получили усиление в почти 7 миллионов раз?
Такое утверждение - чушь собачья.
Это просто результат умножения кодов.

Теперь, насчет усиления в (1)

Что нам мешает написать:

Y[i] = K * (a * Y[i-1] + b * X[i] (1)), где K - типа коэффициент усиления?
Ничто не мешает, как не мешает это и реализовать.
Все, что потребуется ( если говорим о целочисленных вычислениях) - это перейти к большей длине сетки, дабы не потерять значимые разряды или не влететь в переполнение.

Будет ли это считаться коэффициентом усиления?
Абстрактно, по математике и до перевода в цифру - да, можно так сказать.
После перехода к дискретам - конечно же нет.
Это всего лишь коэффициент масштабирования.
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 13 2016, 14:07
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Verizon @ Feb 13 2016, 21:36) *
Если можно, что такое формат 1.15 ?

Продолжая учебник,
можно сказать, что понятное вам 16-разрядное целое число имеет формат 16.0, т.е. все разряды располагаются слева от разделителя целой и дробной части и имеют веса 1,2,4,8 и т.д. Формат 1.15 - это когда 1 разряд в целой части, а остальные 15 - в дробной. Веса разрядов справа от точки будут соответственно 1/2, 1/4, 1/8 и т.д. Точно также в десятичной системе веса цифр в целой части равны положительным степеням десятки, а в дробной - отрицательным.
И все это - форматы с фиксированной точкой.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 13 2016, 14:25
Сообщение #25





Guests






Дополню.
В "наше" время, да и сейчас этим пользуюсь, мы использовали формат с фиксированной точкой 0.Х
Что это означает? Это означает, что числа не превышали по модулю 1.0
Пример (bin/dec формат):
0.1 == 0.5
0.11 == 0.75 (0.5 + 0.25)
0.111 == 0.875 (0.5 + 0.25 + 0.125)
и т.д.
Смысл понятен, надеюсь. ( см. пост #24)

Преимущество перед целочисленкой - никогда не будет переполнения, поскольку:
- результаты сложения контролируются на уровне первоначальной математики;
- результаты умножения, к примеру 0.5*0.5 = 0.25 - всегда меньше 1

P.S.
В формате bin: пример 0.1, где ноль означает знак, а при знаке 1 - числа представляются в дополнительном коде.
Пример для сетки 8р
+ 0.5 (dec) == 0.1000000 (bin)
- 0.5 (dec) == 1.0111111 + 1 == 1.1000000 (bin)
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 13 2016, 14:37
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



1.15 знаковый по модулю не превышает 1. Вообще в знаковых форматах старший разряд имеет отрицательный вес (-32768 в формате 16.0 и -1 в формате 1.15)
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 13 2016, 14:47
Сообщение #27





Guests






Ну.. Тогда мы "изобретали" все впервой и не до стандартов было, их просто не было.

>Формат 1.15 - это когда 1 разряд в целой части, а остальные 15 - в дробной.

Мы целой частью не пользовались, числа были принципиально меньше 1.0 - я это специально уточняю.
Старший разряд, есс-но - знаковый.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 13 2016, 15:35
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 13 2016, 14:33) *
Теперь, насчет усиления в (1)

Что нам мешает написать:

Y[i] = K * (a * Y[i-1] + b * X[i] (1)), где K - типа коэффициент усиления?
Ничто не мешает, как не мешает это и реализовать.
Все, что потребуется ( если говорим о целочисленных вычислениях) - это перейти к большей длине сетки, дабы не потерять значимые разряды или не влететь в переполнение.

Будет ли это считаться коэффициентом усиления?
Абстрактно, по математике и до перевода в цифру - да, можно так сказать.
После перехода к дискретам - конечно же нет.
Это всего лишь коэффициент масштабирования.

Спасибо. Доходчиво.
Если рассуждать на уровне коэффициентов фильтра: можно же просто поделить все коэффициенты на наименьшее значение. Тем более, что они все симметричны. И что тогда? Очевидно фильтр останется прежним. Но если пересчитать так называемый "коэффициент" то он может измениться в сотню раз. Что получается. Один и тот же фильтр имеет разные коэффициенты усиления? Очевидно, что так рассуждать нельзя. Скорее всего к фильтру можно применять фразу масштабирование. Будут-ли такие рассуждения тоже корректны?

Цитата
Продолжая учебник,
можно сказать, что понятное вам 16-разрядное целое число имеет формат 16.0, т.е. все разряды располагаются слева от разделителя целой и дробной части и имеют веса 1,2,4,8 и т.д. Формат 1.15 - это когда 1 разряд в целой части, а остальные 15 - в дробной. Веса разрядов справа от точки будут соответственно 1/2, 1/4, 1/8 и т.д. Точно также в десятичной системе веса цифр в целой части равны положительным степеням десятки, а в дробной - отрицательным.
И все это - форматы с фиксированной точкой.

Спасибо. Понятно.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 13 2016, 15:42
Сообщение #29





Guests






Цитата(Verizon @ Feb 13 2016, 18:35) *
Спасибо. Доходчиво.
Если рассуждать на уровне коэффициентов фильтра: можно же просто поделить все коэффициенты на наименьшее значение.


Вы просто не путайте математику ЦОС и ее реализацию на абстрактных, тем более - конкретных платформах + "свои" алгоритмы на каждой из них.

P.S.
Вы, "нормальные" книжки/учебники по ЦОС (DSP) читать не пробовали?
Позвольте, но это же увлекательнейшее занятие!

Гольденберг, Блейхут, Рорабаух, Голд, Рейдер, Рабинер, ...etc
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 13 2016, 16:40
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 13 2016, 17:42) *
Вы просто не путайте математику ЦОС и ее реализацию на абстрактных, тем более - конкретных платформах + "свои" алгоритмы на каждой из них.

P.S.
Вы, "нормальные" книжки/учебники по ЦОС (DSP) читать не пробовали?
Позвольте, но это же увлекательнейшее занятие!

Гольденберг, Блейхут, Рорабаух, Голд, Рейдер, Рабинер, ...etc

Да. Понятно. Не то.
Книжки читаю. Наскоками. Возня с железом занимает много времени. Там тоже свои приколы с которыми нужно возиться...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 13 2016, 18:29
Сообщение #31





Guests






Цитата(Verizon @ Feb 13 2016, 19:40) *
Да. Понятно. Не то.
Книжки читаю. Наскоками. Возня с железом занимает много времени. Там тоже свои приколы с которыми нужно возиться...


Прикол в том, что надо "возиться" не с железом, а получить системное образование по DSP ( самостоятельно или как ).
Если Вы чистый железячник и кодировщик, то вопросы по всяким коэффициентам "усиления" не должны были Вас волновать.
Это вопрос к проектировщику ЦОС.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 13 2016, 20:22
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 13 2016, 20:29) *
Прикол в том, что надо "возиться" не с железом, а получить системное образование по DSP ( самостоятельно или как ).
Если Вы чистый железячник и кодировщик, то вопросы по всяким коэффициентам "усиления" не должны были Вас волновать.
Это вопрос к проектировщику ЦОС.

Я тоже так считаю. Но работа ставит свои условия...
Go to the top of the page
 
+Quote Post
Corner
сообщение Feb 14 2016, 07:02
Сообщение #33


Профессионал
*****

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



Коэффициент передачи КИХ фильтра это Фурье от коэффициентов.
АЧХ корень из суммы квадратов действительной и мнимой частей, а ФЧХ арктангенс от их отношения.
Вот уже третья страница ответов. И один стеб над ТСом.

Сообщение отредактировал Corner - Feb 14 2016, 13:06
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 14 2016, 11:35
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(Corner @ Feb 14 2016, 09:02) *
Коэффициент передачи КИХ фильтра это Фурье от коэффициентов. Действительная часть АЧХ, мнимая ФЧХ. Не парьте человеку мозг.

А можна популярней по этому поводу. Где можно почитать.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 14 2016, 12:35
Сообщение #35


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Corner @ Feb 14 2016, 10:02) *
Коэффициент передачи КИХ фильтра это Фурье от коэффициентов. Действительная часть АЧХ, мнимая ФЧХ. Не парьте человеку мозг.

А мне мама говорила что за АЧХ отвечает модуль комплексного числа sqrt(a^2+b^2),а за ФЧХ аргумент atan(b/a).Не парьте человеку мозг©.
Go to the top of the page
 
+Quote Post
Corner
сообщение Feb 14 2016, 13:07
Сообщение #36


Профессионал
*****

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



Цитата(_Anatoliy @ Feb 14 2016, 15:35) *
А мне мама говорила что за АЧХ отвечает модуль комплексного числа sqrt(a^2+b^2),а за ФЧХ аргумент atan(b/a).Не парьте человеку мозг©.

А чего сразу не ответили? Приходится вас провоцировать на переход от стеба к внятным ответам. Любите попинать того кто слабее?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 14 2016, 14:56
Сообщение #37


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если человек выбрал и рассчитал неким образом фильтр с требуемой АЧХ, то эта АЧХ и дает ответ на то, какой коэффициент усиления на какой частоте получается. И если среди коэффициентов импульсной характеристики фильтра фигурируют числа вроде 2577, то где-то сбоку в скобках должен быть написан результирующий коэффициент передачи в полосе пропускания.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 14 2016, 16:08
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(ViKo @ Feb 14 2016, 16:56) *
Если человек выбрал и рассчитал неким образом фильтр с требуемой АЧХ, то эта АЧХ и дает ответ на то, какой коэффициент усиления на какой частоте получается. И если среди коэффициентов импульсной характеристики фильтра фигурируют числа вроде 2577, то где-то сбоку в скобках должен быть написан результирующий коэффициент передачи в полосе пропускания.

Итак: вот коэффициенты полосового фильтра
Код
const int BL = 51;
const int16_T B[51] = {
        0,    116,      0,   -214,      0,    354,      0,   -540,      0,
      772,      0,  -1042,      0,   1339,      0,  -1645,      0,   1939,
        0,  -2199,      0,   2403,      0,  -2533,      0,   2577,      0,
    -2533,      0,   2403,      0,  -2199,      0,   1939,      0,  -1645,
        0,   1339,      0,  -1042,      0,    772,      0,   -540,      0,
      354,      0,   -214,      0,    116,      0
};

Это коэффициенты того же фильтра только в представлении single precision float
Код
const int BL = 51;
const real32_T B[51] = {
  1.918891103e-017, 0.003540127072,-1.534936528e-017,-0.006518422626,-4.021064338e-018,
    0.01079472061,-1.573901201e-017, -0.01648111269,2.065347567e-017,  0.02354936302,
  -2.506165681e-017, -0.03180202469,2.834668881e-017,  0.04086523131,-3.332726239e-017,
   -0.05020761862,3.42012515e-017,  0.05918549001,-1.684618334e-017, -0.06710969657,
  3.634848995e-017,  0.07332533598,              0, -0.07729265094,-7.835030939e-017,
    0.07865639776,-7.835030939e-017, -0.07729265094,              0,  0.07332533598,
  3.634848995e-017, -0.06710969657,-1.684618334e-017,  0.05918549001,3.42012515e-017,
   -0.05020761862,-3.332726239e-017,  0.04086523131,2.834668881e-017, -0.03180202469,
  -2.506165681e-017,  0.02354936302,2.065347567e-017, -0.01648111269,-1.573901201e-017,
    0.01079472061,-4.021064338e-018,-0.006518422626,-1.534936528e-017, 0.003540127072,
  1.918891103e-017
};

Ослабление вне полосы -40dB. Если в первом случае так называемый "коэффициент передачи" посчитанный по коэффициентам это сумасшедшее число, то во втором случае это число меньше 1. Вывод: понятие "коэффициент передачи" для цифрового фильтра это мо меньшей мере некорректность. Цифровой фильтр (в частности полосовой) он всего лишь пропускает хорошо через себя некоторые частоты в некоторой полосе и давит другие вне полосы. И ВСЕ. Согласен с TSerg что "коэффициент усиления" в цифровой системе это некорректно.

Сообщение отредактировал Verizon - Feb 14 2016, 16:30
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 14 2016, 16:14
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



ВСЕ, так ВСЕ.
Аминь!

P.S. Если X умножить на Y, значит ли это, что мы усилили X в Y раз?
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 15 2016, 00:45
Сообщение #40


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(ViKo @ Feb 15 2016, 02:14) *
P.S. Если X умножить на Y, значит ли это, что мы усилили X в Y раз?

Там даже не умножают. Там просто договариваются, где стоит (или плавает) разделитель целой и дробной части числа.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 15 2016, 04:28
Сообщение #41


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(V_G @ Feb 15 2016, 03:45) *
Там даже не умножают. Там просто договариваются, где стоит (или плавает) разделитель целой и дробной части числа.

А договорившись, таки умножают? biggrin.gif Я про выборки и коэффициенты.
А усилить в 0.25 раз - считается усилением?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 15 2016, 07:57
Сообщение #42





Guests






Цитата(Verizon @ Feb 14 2016, 14:35) *
А можна популярней по этому поводу. Где можно почитать.


Открыть любой учебник по ЦФ и найти выражение для комплексного коэффициента передачи:
Прикрепленное изображение

Цитата(Verizon @ Feb 14 2016, 19:08) *
Вывод: понятие "коэффициент передачи" для цифрового фильтра это мо меньшей мере некорректность.


Да уж, "аминь, так аминь".
Как раз термин "коэффициент передачи" является корректным к любому трансформирующему сигнал элементу, в т.ч. и цифровому.
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 15 2016, 08:38
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(ViKo @ Feb 15 2016, 14:28) *
А усилить в 0.25 раз - считается усилением?

Очень точное попадание: усилить в 0.25 раз - как раз передвинуть точку на 2 разряда влево.
В ЦСП ADSP-21XX масштабирование массивов данных происходит именно в блоке сдвигателя.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 15 2016, 08:55
Сообщение #44


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(V_G @ Feb 15 2016, 11:38) *
Очень точное попадание: усилить в 0.25 раз - как раз передвинуть точку на 2 разряда влево.

Я знаю. rolleyes.gif Одно дело - практическая реализация, а другое - теоретический принцип.
Go to the top of the page
 
+Quote Post
Verizon
сообщение Feb 15 2016, 09:13
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-01-16
Пользователь №: 90 225



Цитата(TSerg @ Feb 15 2016, 09:57) *
Как раз термин "коэффициент передачи" является корректным к любому трансформирующему сигнал элементу, в т.ч. и цифровому.

Все так. Путаница в терминах. Тема про так называемый "коэффициент усиления", который при разном представлении коэффициентов может быть сильно разный. Сомнения только по поводу термина "коэффициент усиления".
Кстати, а коэффициент передачи ЦФ может быть больше 1?

Сообщение отредактировал Verizon - Feb 15 2016, 09:16
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 15 2016, 13:07
Сообщение #46





Guests






Давайте все же вернемся к основам.
Аналоговые (по другому - непрерывные) системы оперируют непрерывными сигналами и процессами и, в любой произвольный момент времени, значение сигнала точно соответствует значению процесса.
Не излишне будет напомнить, что в этом случае мы пользуемся всей шкалой вещественных чисел для операций над значениями сигнала.
Теория дискретных систем оперирует с понятиями временного и/или амплитудного квантования процесса.

Если мы рассматриваем теорию дискретных систем с использованием только временного квантования, то здесь термин "усиление" еще уместен, поскольку мы еще остаемся в рамках непрерывных амплитудных значений.
Расчеты дискретных систем (цифровых фильтров, в частности), выполняемые с учетом дискретного квантования по времени, вполне себе оперируют понятием "усиление".
Другое дело, что частнотно- и фазо-преобразующие цепи все же принято проектировать, оставаясь в рамках единичной окружности, т.к. с максимальным коэффициентом = 1.
Это упрощает унификацию и систематизацию таких цепей и расчеты.
Добавить скалярный коэффициент больший или меньший 1 ( типа - "коэфф. усиления" или gain ) - нет никаких проблем на этом этапе.

Для дискретных линейных систем применяется термин передаточная или системная функция, для нелинейных - вводятся еще функции той или иной нелинейности.

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

Причем совершенно не важно, в каком формате ( float, fix, целые числе), в какой разрядности и на какой разрядности платформы и какими алгоритмами мы работаем.
Как уже говорилось мной выше, восстановление значений сигнала в промежутке между временными и амплитудными дискретами возможно, но это - вероятные значения, а не реальные.

Добавление некоторого множителя на этом этапе (< 1 или > 1), который является просто масштабным коэффициентом, может быть оправдано, конечно же:
согласование данных между разными каналами, уменьшение/увеличение вычислительного динамического диапазона, исключение переполнения и пр.


Цитата(Corner @ Feb 14 2016, 10:02) *
Вот уже третья страница ответов. И один стеб над ТСом.


Вы ошибаетесь- нет никакого стеба.
Снизойдите до уровня ТС и поясните на пальцах, но Вам же влом?
Go to the top of the page
 
+Quote Post

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

 


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


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