在python中产生sin波的中心频率

时间:2017-11-05 11:43:01

标签: python for-loop operator-keyword frequency

我在心理声学模型中实现扩散功能。 我的步骤:

  1. 生成每个树皮的中心频率
  2. 将子带频率分组到Bark组
  3. 计算每个临界频带的功率
  4. 转换为dB
  5. 我从第1步开始,在python中遇到语法错误。 我不知道如何纠正

    # Generate center frequency of each Bark
    center = zeros(1, size(bark_scale, 2) - 1)
    for k in  1:size(bark_scale, 2) - 1:
        center(k) = (bark_scale(k) + bark_scale(k + 1)) / 2
    end
    

    修改

    # Generate center frequency of each Bark
    center = zeros(1, bark_scale.size[1]- 1)
    k = np.arange(bark_scale.size[1] - 1)
    center = (bark_scale[k] + bark_scale[k + 1]) / 2
    

    修改+校正

1 个答案:

答案 0 :(得分:0)

以下是更正代码的方法。我假设bark_scale是一个形状为(1, n)的数组,并加载了numpy

Numpy 首先,您需要导入numpy才能处理数组:

import numpy as np

数组大小要获取数组第二维的大小(例如bark_scale),您应该使用bark_scale.size[1]而不是size(bark_scale, 2)

用零填充的数组要定义一个用零填充的数组,您应该使用np.zeros((1, 10))而不是zeros(1, 10)

For loop 在Matlab中,它看起来像这样:

for k = 1:10
    % ...
end

而在Python中它看起来像:

for k in range(0, 10):
    # ...

数组访问您应该使用bark_scale[k]代替bark_scale(k)来获取bark_scale的第k个值。

有了所有这些要点,您应该能够纠正您的代码。我希望这会对你有所帮助。