|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgenij Masherov 2:5020/175.2 05 Jun 2001 13:09:19 To : Sergey Kabikov Subject : ?? Сложение 2-х сигналов ... -------------------------------------------------------------------------------- Tue Jun 05 2001 11:19, Sergey Kabikov wrote to Evgenij Masherov: SN>>> Возник вопросец. Каким образом сложить два оцифрованных сигнала SK> [skip] EM>> просуммировать (с насыщением, т.е. если сумма больше масимального целого EM>> - заменить максимальным целым, а то, если 16384+16384=-32768 - EM>> интересные звуковые эффекты:) EM>> и записать на место. SK> Hесколько спорное утверждение (насчет насыщения). Я предложил бы SK> использовать взвешенное суммирование с коэффициентами, в сумме равными SK> единице : SK> Результат = К*Сигнал1 + (1 - К)*Сигнал2 SK> А если нужно _предельное_ качество, то суммировать в 32-битной сетке (или SK> даже с плавающей запятой двойной точности ;-) в промежуточный файл, а SK> затем нормализовать. SK> 2SN: Hормализация - это умножение всех входящих в сигнал значений на один SK> и тот же коэффициент, выбранный так, чтобы самое бОльшее из них не вышло SK> за разрядную сетку. Алгоритм : SK> - находим максимальное (естественно, по модулю) из всех мгновенных SK> значений нормализуемого сигнала : SK> Maxx := 0; SK> for i:=0 to SignalCount-1 do SK> if ABS(Signal[i]) > Maxx then Maxx := ABS(Signal[i]); SK> - вычисляем коэффициент нормализации (32766 - для 16-битной сетки) : SK> Coeff := 32766.0 / Maxx; SK> - нормализуем : SK> for i:=0 to SignalCount-1 do SK> Result[i] := ROUND(Coeff * Signal[i]); SK> Для простоты изложения все величины (кроме результата) представлены с SK> плавающей запятой. Целочисленный случай аналогичен, но требует более SK> аккуратного обращения с промежуточными результатами (опасность SK> переполнения/потери точности из-за округления). Это действительно даст лучшее качество, однако апиори коэффициент неизвестен, так что онлайн-обработка затруднена. Решение с насыщением - скорее для суммирования "на лету", а при обработке доступных на всем протяжении записей вычисление нормирующего коэффициента действительно даст лучшее качество (насыщение приводит к появлению высших гармоник, для речи это малозначимо, а вот музыку изуродовать можно капитально:) С уважением Евгений Машеров АКА СанитарЖеня --- ifmail v.2.15 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/3300c7286fc6.html, оценка из 5, голосов 10
|