擅长:python、mysql、java
<p><strong>TL;WR:</strong></p>
<p>它们使用不同的定义。Matlab相当于Numpy的<code>hanning</code>是<code>hann</code>,而不是{<cd1>}。在</p>
<hr/>
<p>在Matlab中,<code>hanning(n)</code>创建一个对称窗口。根据文件<code>hanning.m</code>中的代码,对于偶数<code>n</code>,此窗口的前半部分计算如下</p>
<pre><code>m = n/2;
w = .5*(1 - cos(2*pi*(1:m).'/(n+1)))
</code></pre>
<p>然后得到完整的窗口为<code>w = [w; w(end:-1:1)]</code>。除了数值精度问题(这可能是Matlab只计算一半然后镜像的原因),这相当于</p>
^{pr2}$
<p>在<strong>Numpy</strong>中,根据<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.hanning.html" rel="nofollow noreferrer">documentation</a>,公式是不同的。在Matlab语法中,它对应于</p>
<pre><code>w = .5*(1 - cos(2*pi*(0:n-1).'/(n-1)));
</code></pre>
<p>这是Matlab的<code>hann(n)</code>,如其<a href="https://www.mathworks.com/help/signal/ref/hann.html" rel="nofollow noreferrer">documentation</a>所述。在</p>