TL; WR:
Они используют разные определения. Матлаб, эквивалентный Numpy's hanning
, равен hann
, а не hanning
.
В Matlab , hanning(n)
создает симметричное окно. Из кода в файле hanning.m
для четных n
первая половина этого окна вычисляется как
m = n/2;
w = .5*(1 - cos(2*pi*(1:m).'/(n+1)))
, а затем полное окно получается как w = [w; w(end:-1:1)]
. За исключением проблем с числовой точностью (которые, вероятно, являются причиной, по которой Matlab вычисляет только половину, а затем отражает ее), это эквивалентно
w = .5*(1 - cos(2*pi*(1:n).'/(n+1)));
В Numpy , согласно документации , формула другая. В синтаксисе Matlab это соответствует
w = .5*(1 - cos(2*pi*(0:n-1).'/(n-1)));
, что соответствует Matlab hann(n)
, как описано в его документации .