フィルターの長さを考えると、Pythonで1Dガウスカーネルを生成する最も簡単な方法は何だろうと思っています。ベクトル [-filter-length,...,filter_length] の値の正規分布を評価するという考えは正しいですか?
これまでのところ、私はこれを行ってきましたが、なぜ正しくないのかわかりません:
result = np.zeros( filter_length )
mid = filter_length/2
result=[(1/(sigma*np.sqrt(2*np.pi)))*(1/(numpy.exp((i**2)/(2*sigma**2)))) for i in range(-mid,mid+1)]
return result
ここsigma
で、 はパラメータである標準偏差です。filter-length
もパラメータです。
たとえば、 length=3 およびsigma=math.sqrt(1.0/2/math.log(2))を取得するため、正しくありません
[0.23485931967491286、0.46971863934982572、0.23485931967491286]
そして、それは次のようになります。
[0.25、0.5、0.25]
それで、丸めの問題はありますか?何が起こっているのかわかりません...
編集私は何とか切り捨てるべきだと思います
問題解決問題は、正規化していないことでした。ベクトルをそのすべてのコンポーネントの合計で割る必要がありました。