発生している問題・エラーメッセージ
以下のようなエラーが出てしまっていて、ゼロで割ってしまっているとのことなのですがどこでゼロで割っているのかがわからなくて困っています。
Traceback (most recent call last): File "/Users/matsumura/PycharmProjects/wave/pinknoise_generater.py", line 29, in <module> a, b = synth_pinknoise(duration=10.0, samprate=48000) File "/Users/matsumura/PycharmProjects/wave/pinknoise_generater.py", line 17, in synth_pinknoise t = np.arange(start=0, stop=duration, step=(int(1/samprate))) ZeroDivisionError: float division by zero
該当のソースコード
python
1# coding: UTF-8 2# 必要なライブラリ 3import math 4import numpy as np 5import matplotlib 6matplotlib.use('TkAgg') 7import matplotlib.pyplot as plt 8 9# ピンクノイズの関数定義 10def synth_pinknoise(duration, samprate): 11 """ 12 Generate pinknoise using Voss algorithm 13 http://www.firstpr.com.au/dsp/pink-noise/ 14 """ 15 f_low = 10 # lowest frequency to keep pink (Hz) 16 levels = math.ceil(np.log2(samprate/f_low)) 17 t = np.arange(start=0, stop=duration, step=1/samprate) 18 out = np.zeros(len(t)) 19 x = np.random.normal(size=levels) 20 for n in range(math.ceil(samprate * duration)): 21 for m in range(levels): 22 if n % 2**(m+1) == 0: 23 x[m] = np.random.normal() 24 out[n] = np.random.normal() + np.sum(x) 25 return(out / max(abs(out)), t) 26 27 28# 使い方(戻り値は、x:ピンクノイズ信号、t:各サンプルの時刻) 29a, b = synth_pinknoise(duration=10.0, samprate=48000) 30plt.plot(a,b) 31plt.show() 32 33
回答2件
あなたの回答
tips
プレビュー