【发布时间】:2018-02-23 02:01:01
【问题描述】:
好的,我有以下代码,但我似乎无法弄清楚为什么它们不做同样的事情,我正在尝试复制 Matlab:
Matlab
buflen = 1024
overlap = 512
blend = ones(buflen,1);
blend(1:overlap+1) = 0:1/overlap:1;
blend(buflen-overlap:buflen) = 1:-1/overlap:0
Python
buflen = 1024
overlap = 512
blend = np.ones(buflen)
blend[0:overlap+1] = np.arange(0,2)/np.arange(overlap:1)
blend[buflen-overlap-1:buflen] = np.arange(1,-1)/np.arange(overlap,0)
我目前停留在主代码的第二行,在 matlab 中“0:1/overlap:1”以 0.001953125 的步长生成一个从 0 到 1 的 513x1 数组。
在 Python 中,"np.arange(0,2)/np.arange(overlap:1)" 它只是不起作用。 我无法弄清楚 Matlab 中发生了什么。
有什么想法吗?
【问题讨论】:
-
你为什么不用
np.arange(start,end,STEP)? -
最干净的可能是
np.linspace(0, 1, overlap+1)
标签: python arrays matlab numpy