LINUX.ORG.RU

исходник свёртки


0

0

Дайте plz сабж, самый простейший - сдвиг/перемножение/суммирование двух массивов... На бумаге по шагам всё вроде придумалось, а придумать цикл в программе который будет всё это делать как надо как-то не получается. :( Особенно интересует случай когда у массовов разные размеры.

anonymous

Ответ на: комментарий от anonymous

Свертку можно делать через FFT (Fast convolution). А самый простой пример вероятно так:

def conv(d, h):
  res = []
  for i in range(len(d)-len(h)):
    s = 0
    for j in range(len(h)):
      s += d[i+j]*h[j]
    res.append(s)

  return res

print conv(range(100), [1,2,3,4])

Не проверял, могут быть ошибки.

alexru ★★★★
()

Что-то я не понимаю, что значит "перемножение двух массивов". Массивы обычно содержат какие-то определённые данные, например коэффициенты полиномов или координаты векторов (это если рассматривать наипростейшие случаи), и для разных типов данных будут разные алгоритмы перемножения.

Jini ★★
()
Ответ на: комментарий от Jini

Сигнал и импульсный отклик системы. Запись звука и реверберация помещения, если угодно.

anonymous
()
Ответ на: комментарий от anonymous

> А не i-j? Там же второй массив в обратном порядке перемножать надо...

а там от оператора зависит. А вообще там прям по теории простейший цикл записывается.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.