3 回答

TA贡献1878条经验 获得超4个赞
您使用的是什么 Python 转换例程?这是 Python 的 numpy 卷积:
>>> conc = [10,100,1000,5,2000,200,20]
>>> conc_filter = [1,2,3]
>>> numpy.convolve(conc, conc_filter,axis=0,mode='constant')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: convolve() got an unexpected keyword argument 'axis'
>>> numpy.convolve(conc, conc_filter)
array([ 10, 120, 1230, 2305, 5010, 4215, 6420, 640, 60])
您可能需要查看 Python 包的文档,并了解如何使 fft() 类型例程执行您需要的操作。

TA贡献1848条经验 获得超6个赞
对于那些感兴趣的人,我制定了在“常量”模式下使用的填充方案,作为参数传递给 Python 卷积函数。找到输入/输出大小之间关系的困难是由于对称与非对称卷积滤波器的左右填充方式。
下面的 Julia 代码似乎与所有测试输入/输出的 Python 等效代码相匹配。
conc = [10,100,1000,5,2000,200,20]
conc_filter = [1,2,3]
n=length(conc)
m=length(conc_filter)
padleft=ceil(Int32,m/2)-1
padright=floor(Int32,m/2)
conc =append!(zeros(padleft),conc)
conc = append!(conc,zeros(padright))
out = zeros(n)
for i in 1:n
for j in 1:m
out[i] += conc[i+j-1]*conc_filter[m-j+1]
end
end
out
结果:[ 120, 1230, 2305, 5010, 4215, 6420, 640]

TA贡献1860条经验 获得超9个赞
假设我正确理解你的问题:
根据stackexchange 上的这个答案,Julia 示例的向量长度是正确的。
N + M - 1 给出的输出向量长度为 9,如 Julia 的答案所示。
您确定 Python 代码和/或复制的输出正确吗?
添加回答
举报