Очевидно, этот пост несколько устарел, но, возможно, для некоторых он все еще интересен:
Я думаю, что в Python есть два почти равных эквивалента:
- Вы можете попробовать функцию firwin с помощью window = 'boxcar'. Это похоже на Matlab, где fir1 с окном вагона обеспечивает те же (или, по крайней мере, очень похожие результаты), что и firls.
- Вы также можете попробовать метод firwin2 (метод частотной выборки, аналогичный fir2 в Matlab), снова используя window = 'boxcar'
Я попробовал один пример из справочника Matlab и добился почти идентичных результатов для:
Matlab:
F = [0 0.3 0.4 0.6 0.7 0.9];
A = [0 1 0 0 0.5 0.5];
b = firls(24,F,A,'hilbert');
Python:
F = [0, 0.3, 0.4, 0.6, 0.7, 0.9, 1]
A = [0, 1, 0, 0, 0.5, 0.5, 0]
bb = sig.firwin2( 25, F,A, window='boxcar', antisymmetric=True )
Мне пришлось увеличить порядок до N = 25, а также мне пришлось добавить еще одну точку данных (F = 1, A = 0), на которой настаивал Python; опция antisymmetric = True необходима только для этого особого случая (фильтр Гильберта)