我正试着用音频样本做一些卷积。 我有一个样本s和同一个样本,上面添加了一些过滤器s\f。两个样本都表示为numpy数组。 我想对它们进行反褶积,以便得到一个表示孤立滤波器f的数组。一旦我这样做了,我就应该能够使用s和f的卷积来再现s\f。
代码如下:
f = signal.deconvolve(s, s_f)
convolved = signal.convolve(s, f)
但是,在第二行出现以下错误:
ValueError: in1 and in2 should have the same rank
有人知道我在这里做错了什么吗?
非常感谢, 奥马尔
rank(x)
返回矩阵的秩。换句话说,它包含的维数。在调用s
之前,请检查f
和s
的列组是否相同。否则你将收到一个例外,你报价。我不知道反褶积为什么会返回比给定输入更多维数的数据。这需要更深入的调查,我没有时间。
deconvolve
返回两个数组,商和余数。所以试试看:很长一段时间以来,
deconvolve
没有一个正确的docstring,但是它在github的master分支中有一个:https://github.com/scipy/scipy/blob/master/scipy/signal/signaltools.py#L731docstring显示了使用
deconvolve
的示例。还有一个(sig
是scipy.signal
,而np
是numpy
):要去卷积的信号是
z
,滤波器系数在filter
:应用
deconvolve
:将筛选器应用于
q
以验证是否返回z
:从结构上看,这是一个非常干净的例子。余数为零:
当然,你不会总是得到这么好的结果。
相关问题 更多 >
编程相关推荐