To st256
Не стоит прощаться навечно, так как
Постараюсь безэмоционально показать ошибочность ваших утверждений.
Для начала еще раз с определяемся с используемыми переменными
N - длина массива данных, которые должны быть отфильтрованы
n - длина симметричного FIR фильтра (Вы почему то для длины FIR фильтра используете переменную N, что и является причиной ошибочности вашего утверждения).
В большинстве приложений N>>n.
В этом случае количество перемножений будет N*(n/2).
Таким образом надо сравнивать Log2(N)/2 и n/2, поэтому ваша реплика
Цитата
Разницу ощущаете?
уходит в воздух.
Теперь возвращаемся к исходному тезису "свертка требует меньше перемножений, чем фильтрация через БПФ при условии, что длина фильтра существенно меньше чем длина массива данных".
При фильтрации через БПФ, вам надо иметь спектр исходных данных, спектр фильтра (это можно посчитать один раз), перемножить два спектра и рассчитать обратное преобразование фурье. Во-первых, это уже не заявленное вами N/2*log2(N), во вторый, при этом если не делать специальных дополнительных действий, в результате будет кольцевая свертка (правильное английское название Circular convolution: с вытекающим мгновенно недостатком Aliasing that can occur in the time domain when frequency domain signals are multiplied. Each period in the time domain overflows into adjacent periods.)
Нет возражений, что в фундаментальной литературе свертка через описан БПФ описана, цитируемый недостаток взят из The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith
California Technical Publishing ISBN 0-9660176-3-3 (1997)
Данный метод с улучшением, позволяющим избегать Circular convolution используется и в моих измерениях, когда он действительно может дать выигрыш, поэтому все тонкости этого метода мне известны.
Вы абсолютно правы утверждая, что
Цитата
При этом, БПФ можно истолковать как гребенку фильтров с АЧХ вида sin(x)/x.
Но дальше возникает два очень существенных момента,
1. Размерность ваших данных кратна степепи двойки или нет.
2. Хватит ли у вас компьютерных ресурсов для вычисления БПФ в случае большого количества данных?
3. Насколько с учетом ошибок округления и т.п., вычисление амплитуды и фазы через свертку дадут вам большую погрешность, чем БПФ?
Ответы далеко не всегда однозначны, поэтому в настоящее время на рынке присутствуют как FFT spectrum analyzer, так и spectrum analyzer сконструированные на основе свертки (фильтрации).