选择任意维度来过滤?

时间:2016-08-11 15:58:18

标签: multidimensional-array julia

在朱莉娅,是否有一种“选择在任意维度上循环”的好方法d?例如,我想将扩散滤波器应用于我想要做的2D x

for j = 1:size(x,2)
  for i = 2:size(x,1)-1
    x2[i,j] = x[i-1,j] - 2x[i,j] + x[i+1,j]
  end
end

但是我想编写一个函数diffFilter(x2,x,d),其中x可以是任意维度数组,d是任何小于ndims(x)的维度,并且它应用此x[i-1] + 2x[i] - x[i+1] 1}}沿尺寸d过滤(进入x2而不分配)。知道如何进行索引,以便我可以使用d将循环的特殊部分作为d索引吗?

2 个答案:

答案 0 :(得分:2)

你会想看看Tim Holy在这个主题上写的那篇博文:

这应该会让你开始讨论这个问题。

答案 1 :(得分:1)

标准库函数mapslices执行此操作。您可以编写一个将过滤器应用于向量的函数,mapslices将负责将其应用于特定维度。