Matlab到Python的翻译 - 划分数组

时间:2018-02-23 02:01:01

标签: python arrays matlab numpy

好的我有以下代码,我似乎无法弄清楚为什么他们不做同样的事情,我试图复制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 /重叠:1"从0到1生成一个513x1数组,步长为0.001953125。

在Python中," np.arange(0,2)/ np.arange(重叠:1)"它只是不起作用。 我无法解决Matlab中发生的事情。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我不确定但您是否可能只是误读了Matlab语法。使用括号可能有助于澄清一点:

  1. 0:(1/overlap):1
  2. 不同
  3. (0:1)/(overlap:1)
  4. 第一个意味着以0的步长从1转到(1/overlap),而第二个则试图划分两个数组。

    如果您希望Python的行为类似于您应该使用的第一个代码段

    np.arange(0, 1 + (1/overlap), 1/overlap)
    

    甚至更好,因为@PaulPanzer建议

    np.linspace(0, 1, 1+overlap)