|
|
  |
Коэффициент усиления цифрового фильтра |
|
|
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 Да. Понятно. Не то. Книжки читаю. Наскоками. Возня с железом занимает много времени. Там тоже свои приколы с которыми нужно возиться...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|