@nprofile1q... @nprofile1q... давай приведу пример штуки, которая красивая и работает, а также чертовски сложной и вообще неинтуивной штуки, которая тоже работает... Но будет нюанс.
В левом углу ринга встречайте: DFT, дискретное преобразование Фурье. Очень простая штука: грубо говоря, берём один набор векторов размером k на k, множим на второй набор векторов размером n на n и получаем вместо сигнала во времени разбивку амплитуд по частотам. Две двухстоочные петли фор — и готово. Просто, красиво, читабельно. А ещё необходимые вычисления растут в геометрической прогрессии и любой хоть сколько-нибудь большой сампл нужно считать часами.
В правом углу ринга FFT, быстрое преобразование Фурьера. Сам чёрт ногу в процедуре сломит, костыль на костыле, нам доктор две лекции объяснить процесс пытался, а потом сказал: "мы не требуем от вас имплементировать fft самостоятельно. Это сделали давно за вас, да у вас и не получится это сделать хорошо." Но при этом рост сложности вычислений — логарифмический.