在朱莉娅,是否有一种“选择在任意维度上循环”的好方法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
索引吗?
答案 0 :(得分:2)
你会想看看Tim Holy在这个主题上写的那篇博文:
这应该会让你开始讨论这个问题。
答案 1 :(得分:1)
标准库函数mapslices
执行此操作。您可以编写一个将过滤器应用于向量的函数,mapslices
将负责将其应用于特定维度。