【发布时间】:2018-09-26 08:09:08
【问题描述】:
我正在尝试将一段代码从 Python 转换为 Julia,但我很难理解以下卷积之间的输出差异:
Python:
conc = [10,100,1000,5,2000,200,20]
conc_filter = [1,2,3]
sp.ndimage.convolve1d(conc, conc_filter,axis=0,mode='constant')
输出:[ 120, 1230, 2305, 5010, 4215, 6420, 640]
朱莉娅:
conc = [10,100,1000,5,2000,200,20]
conc_filter = [1,2,3]
conv(conc,conc_filter)
输出:[10, 120, 1230, 2305, 5010, 4215, 6420, 640, 60]
谁能解释为什么输出长度不同?为了重新创建 Python 输出,我尝试提出一个逻辑公式,将输入/过滤器大小与切片 conv 输出并获得相同结果所需的索引范围相关联。然而,我的运气并不好。是否有可以产生相同输出的 Julia 函数?
【问题讨论】:
-
你使用的是什么版本的 Julia,
conv函数是从哪里来的? -
在您的 Julia 代码中,输入数组有 7 个元素,但输出有 9 个元素。对吗?
-
@StevenSiew 在版本 1.0.0 中运行 OP 的 Julia 代码,我得到了相同的 9 个元素。 (此外,由于 DSP 包已从“基本”语言中删除,因此 OP 可能正在运行 1.0 之前的版本。)OTOH,OP 可能没有在他的问题代码中包含 add DSP 和 using DSP 命令。
-
它们都是正确的,它们只是以不同的方式处理边界条件。
-
@DNF 您似乎可以写出您的 cmets 作为答案。您可能已经解决了 OP 的问题。
标签: python julia convolution