deconvolve
商と剰余の2 つの配列を返します。だから試してください:
f, r = signal.deconvolve(s, s_f)
長い間、deconvolve
適切な docstring はありませんでしたが、github の master ブランチに 1 つありました: https://github.com/scipy/scipy/blob/master/scipy/signal/signaltools.py#L731
docstring は、 の使用例を示していますdeconvolve
。ここに別のものがあります ( sig
isscipy.signal
とnp
is numpy
):
デコンボリューションする信号はz
で、フィルター係数は ですfilter
。
In [9]: z
Out[9]:
array([ 0.5, 2.5, 6. , 9.5, 11. , 10. , 9.5, 11.5, 10.5,
5.5, 2.5, 1. ])
In [10]: filter = np.array([0.5, 1.0, 0.5])
適用deconvolve
:
In [11]: q, r = sig.deconvolve(z, filter)
In [12]: q
Out[12]: array([ 1., 3., 5., 6., 5., 4., 6., 7., 1., 2.])
にフィルターを適用して、q
が返されることを確認しますz
。
In [13]: sig.convolve(q, filter)
Out[13]:
array([ 0.5, 2.5, 6. , 9.5, 11. , 10. , 9.5, 11.5, 10.5,
5.5, 2.5, 1. ])
構造上、これは非常にクリーンな例です。剰余はゼロです。
In [14]: r
Out[14]: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
もちろん、常に良い結果が得られるとは限りません。