У меня есть 40 треугольных векторов фильтров Mel-space с 257 элементами в каждом.
Я хочу умножить их на мой спектр мощности (сгенерированный с использованием БПФ из 20-мсекундного аудио кадра) и затем суммировать результаты, чтобы я мог получить спектр мощности в мелком интервале.
Проблема в том, что значение 257, где большинство значений равно нулю, является излишним. Проще говоря, я могу хранить только ненулевые элементы вместо всего значения 257, но я думаю, что есть более разумный способ применить несколько наборов фильтров, возможно, с использованием умножения матриц. Правильно ли мое рассуждение? Если да, то как это делается?
Ваши БПФ также 257 баллов, так что это прямое поэлементное умножение? Ваши блоки фильтров, вероятно, будут иметь большинство своих нулей по краям. Если вы сохраняете для каждого банка фильтров индекс первого и последнего ненулевого элемента, вы, вероятно, можете устранить множество этих нулей и просто сохранить срез между min и max.
Таким образом, чтобы умножить БПФ на этот набор фильтров, вы устанавливаете все коэффициенты БПФ ниже минимума и выше максимума в ноль, и вы умножаете только срезы между минимальным и максимальным.