Мне нужна 1D свертка против двух больших массивов. Я использую этот код на C #, но для его выполнения требуется очень много времени.
Знаю, знаю! Свертка БПФ выполняется очень быстро. Но в этом проекте я НЕ МОГУ его использовать. Ограничением проекта является отказ от использования БПФ (пожалуйста, не спрашивайте, почему: /).
Это мой код на C # (кстати, перенесенный из Matlab):
var result = new double[input.Length + filter.Length - 1];
for (var i = 0; i < input.Length; i++)
{
for (var j = 0; j < filter.Length; j++)
{
result[i + j] += input[i] * filter[j];
}
}
Итак, кто-нибудь знает какой-нибудь алгоритм быстрой свертки с расширением FFT?