Способы оптимизации алгоритмов Цифровой Обработки Сигнала
Компромиссы, когда хочется немного сэкономить
Общее
Арифметические операции
SQRT
- Power spectrum - faster sqrt() :: Michrochip forum thread
- Fastest Integer Square Root in the least amount of instructions
- How to get a square root for 32 bit input in one clock cycle only
Фильтрация
Спектральный анализ
- Алгоритм Винограда расчета коротких ДПФ по простому основанию
- Алгоритм БПФ для произвольной составной длины
Передискретизация сигнала
- Передискретизация сигналов на основе полиномиальной интерполяции - тут используется множитель
1/6 = 0,1(6)
, приблизительно разложить можно так:(1÷8)+(1÷16)−(1÷32)+(1÷64)−(1÷128) = 0,1640625
(или сдвигами:1>>3 + 1>>4 − 1>>5 + 1>>6 − 1>>7
); ошибка будет порядка 1,5%. - Фильтр Фарроу передискретизации сигналов на основе сплайн-интерполяции - нет умножения на
1/6
.