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