|
|
  |
Коэффициент усиления цифрового фильтра |
|
|
|
Feb 12 2016, 10:08
|
Участник

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

|
Имеется структурная схема алгоритма цифровой обработки информации в которой есть цифровые КИХ фильтры. Данные на отдельный фильтр поступают в формате 12 бит со знаком. Коэффициенты в формате 16 бит со знаком. Как в этом случае рассчитывается коэффициент усиления такого фильтра?
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 11:20
|
Guests

|
Коэффициент усиления не имеет отношения к разрядности и формату и задается на этапе проектирования фильтра. В процессе трансформации разрядности вы можете выбрать коэффициент масштабирования самостоятельно.
|
|
|
|
|
Feb 12 2016, 12:33
|
Участник

Группа: Участник
Сообщений: 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 бит. Только некоторые. И вообще не понятно во сколько раз в этом случае (при указанных выше данных) увеличится сигнал... Кому не лень, подскажите пожалуйста популярно как все считается.
|
|
|
|
|
Feb 12 2016, 13:22
|
Участник

Группа: Участник
Сообщений: 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 на нужной частоте?
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 13:35
|
Guests

|
Цитата(Verizon @ Feb 12 2016, 15:33)  Я сомневаюсь в таких рассуждениях. Правильно делаете - надо отделять "котлеты от мух" и заниматься правильным проектированием, начиная с физических данных. 1. На основе данных о сигнале определяются: - физический предельный диапазон сигнала; - отношение сигнал шум; - возможность предварительной аналоговой фильтрации для его повышения; - применение аналогового антиалис-фильтра; - выбор АЦП по разрядности и быстродействию и C/Ш. 2. На основе требований к ЦОС определяется та или иная динамическая система ( к примеру - ФНЧ ). Выполняется математическое проектирование ФНЧ и определяется потенциал перерегулирования ( на основе step-функции ). В общем случае, все равно потребуется выяснение предельных режимов работы ДС. 3. На основе требования к быстродействию и другим параметрам делается выбор аппаратной платформы и принимается решение о вычислениях в той или иной сетке в том или ином формате. Если float-формат - тут все спокойней и ближе к чистой математике. Если выбран фиксированная точка - тут свои ньюансы. Если целочисленный формат - тут во все тяжкие  К примеру, выбран АЦП 12 р. С учетом разрядности платформы операции могут выполняться аппаратно на 16р и программно - кратно 16р. К примеру: имеется умножитель аппаратный 16x16=32 Для большей точности вычислений целесообразно использовать представление входных данных 12р как подмножество 16р, вычисления выполнять в максимальном варианте ( аккумулятор на 32р), а результат выдавать в 16р, но в диапазоне входных данных 12р. С учетом возможного перерегулирования ( к примеру ФНЧ Баттерворта имеет до 20%) - мы могли бы выдавать в формате значащих 13р и не имели бы переполнения. Ну а так, имеет смысл выдавать в формате 16р в соответствии с возможностями платформы по интерфейсу.
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 13:39
|
Guests

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

|
Цитата(ViKo @ Feb 12 2016, 16:41)  Но на некой другой частоте gain будет больше. Да, конечно. Для этого и надо знать изначальную задачу. Судя по коэфф. - это некий резонансный фильтр с небольшим остатком gain на постоянке ( если только это не погрешности вычисления коэф. ) Реакция на step-функцию:
Остаток = 505, что дает gain(0) = 505/(2^16-1) =~ 0.008
|
|
|
|
|
Feb 12 2016, 14:10
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 14:27
|
Guests

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

Группа: Участник
Сообщений: 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
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 14:50
|
Guests

|
Что тут непонятного?
У Вас есть (к примеру) всеполосный КИХ-фильтр ( длиной K taps ), т.е. все коэффициенты = 1 ( в терминах сетки M, к примеру) Есть входной сигнал разрядностью N. Задача - сохранить динамический диапазон.
Используем умножитель M * N, (при желании можно и M * M, без ограничения сказанного) Разрядность на выходе умножителя MN = M + N Поскольку необходимо накопить в аккумуляторе за время одного цикла K-значений с разрядностью MN, то необходимо иметь разрядность аккумулятора больше или равной R = MN + T, где T >= log2(K)
После вычисления суммы можно использовать результат с разрядностью от N и выше.
P.S. Это максималистский подход.
|
|
|
|
|
Feb 12 2016, 15:00
|
Участник

Группа: Участник
Сообщений: 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 }; Явно, что при другом наборе коэффициентов картина изменится.
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 15:34
|
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 Как их интерпретировать и сколько оставить - это Ваша задача.
|
|
|
|
|
Feb 12 2016, 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
|
|
|
|
Guest_TSerg_*
|
Feb 12 2016, 19:06
|
Guests

|
Вы опять о чем-то своем.. ну да ладно. Нет понятия "коэффициент усиления" для цифровой системы из-за разрядности данных или операций.
|
|
|
|
|
Feb 12 2016, 20:08
|
Участник

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

|
Цитата(TSerg @ Feb 12 2016, 21:06)  Вы опять о чем-то своем.. ну да ладно. Нет понятия "коэффициент усиления" для цифровой системы из-за разрядности данных или операций. Может и нет. Это условность. Но необходимая. Вообще спасибо за полезную информацию.
|
|
|
|
|
Feb 13 2016, 11:36
|
Участник

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

|
Цитата(V_G @ Feb 13 2016, 00:53)  Ваши космические коэффициенты фильтра образуются из того, что вы считаете диапазоном 16-разрядного знакового числа -32768...+32767. Тогда как в ЦСП имеется понятие формата с фиксированной точкой. Для формата 1.15 диапазон будет -1...+1. Пересчитайте свои целые коэффициенты в этот формат, и усиление станет порядка 1. Так что "усиление" - действительно условность, зависящая от выбора формата. Тоесть Вы хотите сказать, что такого понятия как "усиление" в цифровой системе в принципе не существует? Я тоже с этим согласен. Посоветуйте пожалуйста как популярно и коротко убедить в этом старшего коллегу, который зациклился на этом "усилении". Я так понимаю, что цифровая система она в принципе ничего не усиливает. Хотя полосовой КИХ вроде как и усиливает...? Если не сложно поясните пожалуйста как правильно все можно обставить это так называемое цифровое "усиление". Если можно, что такое формат 1.15 ?
|
|
|
|
Guest_TSerg_*
|
Feb 13 2016, 12:33
|
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 - типа коэффициент усиления? Ничто не мешает, как не мешает это и реализовать. Все, что потребуется ( если говорим о целочисленных вычислениях) - это перейти к большей длине сетки, дабы не потерять значимые разряды или не влететь в переполнение.
Будет ли это считаться коэффициентом усиления? Абстрактно, по математике и до перевода в цифру - да, можно так сказать. После перехода к дискретам - конечно же нет. Это всего лишь коэффициент масштабирования.
|
|
|
|
|
Feb 13 2016, 14:07
|

Профессионал
    
Группа: Свой
Сообщений: 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 и т.д. Точно также в десятичной системе веса цифр в целой части равны положительным степеням десятки, а в дробной - отрицательным. И все это - форматы с фиксированной точкой.
|
|
|
|
Guest_TSerg_*
|
Feb 13 2016, 14: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)
|
|
|
|
Guest_TSerg_*
|
Feb 13 2016, 14:47
|
Guests

|
Ну.. Тогда мы "изобретали" все впервой и не до стандартов было, их просто не было.
>Формат 1.15 - это когда 1 разряд в целой части, а остальные 15 - в дробной.
Мы целой частью не пользовались, числа были принципиально меньше 1.0 - я это специально уточняю. Старший разряд, есс-но - знаковый.
|
|
|
|
|
Feb 13 2016, 15:35
|
Участник

Группа: Участник
Сообщений: 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 и т.д. Точно также в десятичной системе веса цифр в целой части равны положительным степеням десятки, а в дробной - отрицательным. И все это - форматы с фиксированной точкой. Спасибо. Понятно.
|
|
|
|
Guest_TSerg_*
|
Feb 13 2016, 15:42
|
Guests

|
Цитата(Verizon @ Feb 13 2016, 18:35)  Спасибо. Доходчиво. Если рассуждать на уровне коэффициентов фильтра: можно же просто поделить все коэффициенты на наименьшее значение. Вы просто не путайте математику ЦОС и ее реализацию на абстрактных, тем более - конкретных платформах + "свои" алгоритмы на каждой из них. P.S. Вы, "нормальные" книжки/учебники по ЦОС (DSP) читать не пробовали? Позвольте, но это же увлекательнейшее занятие! Гольденберг, Блейхут, Рорабаух, Голд, Рейдер, Рабинер, ...etc
|
|
|
|
|
Feb 13 2016, 16:40
|
Участник

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

|
Цитата(TSerg @ Feb 13 2016, 17:42)  Вы просто не путайте математику ЦОС и ее реализацию на абстрактных, тем более - конкретных платформах + "свои" алгоритмы на каждой из них.
P.S. Вы, "нормальные" книжки/учебники по ЦОС (DSP) читать не пробовали? Позвольте, но это же увлекательнейшее занятие!
Гольденберг, Блейхут, Рорабаух, Голд, Рейдер, Рабинер, ...etc Да. Понятно. Не то. Книжки читаю. Наскоками. Возня с железом занимает много времени. Там тоже свои приколы с которыми нужно возиться...
|
|
|
|
Guest_TSerg_*
|
Feb 13 2016, 18:29
|
Guests

|
Цитата(Verizon @ Feb 13 2016, 19:40)  Да. Понятно. Не то. Книжки читаю. Наскоками. Возня с железом занимает много времени. Там тоже свои приколы с которыми нужно возиться... Прикол в том, что надо "возиться" не с железом, а получить системное образование по DSP ( самостоятельно или как ). Если Вы чистый железячник и кодировщик, то вопросы по всяким коэффициентам "усиления" не должны были Вас волновать. Это вопрос к проектировщику ЦОС.
|
|
|
|
|
Feb 13 2016, 20:22
|
Участник

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

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

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

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

Группа: Участник
Сообщений: 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
|
|
|
|
Guest_TSerg_*
|
Feb 15 2016, 07:57
|
Guests

|
Цитата(Verizon @ Feb 14 2016, 14:35)  А можна популярней по этому поводу. Где можно почитать. Открыть любой учебник по ЦФ и найти выражение для комплексного коэффициента передачи:  Цитата(Verizon @ Feb 14 2016, 19:08)  Вывод: понятие "коэффициент передачи" для цифрового фильтра это мо меньшей мере некорректность. Да уж, "аминь, так аминь". Как раз термин "коэффициент передачи" является корректным к любому трансформирующему сигнал элементу, в т.ч. и цифровому.
|
|
|
|
|
Feb 15 2016, 09:13
|
Участник

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

|
Цитата(TSerg @ Feb 15 2016, 09:57)  Как раз термин "коэффициент передачи" является корректным к любому трансформирующему сигнал элементу, в т.ч. и цифровому. Все так. Путаница в терминах. Тема про так называемый "коэффициент усиления", который при разном представлении коэффициентов может быть сильно разный. Сомнения только по поводу термина "коэффициент усиления". Кстати, а коэффициент передачи ЦФ может быть больше 1?
Сообщение отредактировал Verizon - Feb 15 2016, 09:16
|
|
|
|
Guest_TSerg_*
|
Feb 15 2016, 13:07
|
Guests

|
Давайте все же вернемся к основам. Аналоговые (по другому - непрерывные) системы оперируют непрерывными сигналами и процессами и, в любой произвольный момент времени, значение сигнала точно соответствует значению процесса. Не излишне будет напомнить, что в этом случае мы пользуемся всей шкалой вещественных чисел для операций над значениями сигнала. Теория дискретных систем оперирует с понятиями временного и/или амплитудного квантования процесса. Если мы рассматриваем теорию дискретных систем с использованием только временного квантования, то здесь термин "усиление" еще уместен, поскольку мы еще остаемся в рамках непрерывных амплитудных значений. Расчеты дискретных систем (цифровых фильтров, в частности), выполняемые с учетом дискретного квантования по времени, вполне себе оперируют понятием "усиление". Другое дело, что частнотно- и фазо-преобразующие цепи все же принято проектировать, оставаясь в рамках единичной окружности, т.к. с максимальным коэффициентом = 1. Это упрощает унификацию и систематизацию таких цепей и расчеты. Добавить скалярный коэффициент больший или меньший 1 ( типа - "коэфф. усиления" или gain ) - нет никаких проблем на этом этапе. Для дискретных линейных систем применяется термин передаточная или системная функция, для нелинейных - вводятся еще функции той или иной нелинейности. В случае перехода дополнительно к временному, еще и к амплитудному квантованию (это признак цифровой системы и, соответственно, обработки), мы оказываемся в рамках счетного множества амплитудных и временных значений. Все, что в непрерывном сигнале могло находится и находилось между временными и амплитудными квантами - уже утеряно и, в рамках цифровой системы термин "усиление" теряет свое первоначальное значение. (понятно, что он может и используется в тех или иных литературных источниках, но далеко не всех). Причем совершенно не важно, в каком формате ( float, fix, целые числе), в какой разрядности и на какой разрядности платформы и какими алгоритмами мы работаем. Как уже говорилось мной выше, восстановление значений сигнала в промежутке между временными и амплитудными дискретами возможно, но это - вероятные значения, а не реальные. Добавление некоторого множителя на этом этапе (< 1 или > 1), который является просто масштабным коэффициентом, может быть оправдано, конечно же: согласование данных между разными каналами, уменьшение/увеличение вычислительного динамического диапазона, исключение переполнения и пр. Цитата(Corner @ Feb 14 2016, 10:02)  Вот уже третья страница ответов. И один стеб над ТСом. Вы ошибаетесь- нет никакого стеба. Снизойдите до уровня ТС и поясните на пальцах, но Вам же влом?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|