【发布时间】:2014-05-30 18:52:03
【问题描述】:
我有一个数组A,其大小为[N1 N2 N3 3 3]。数组A可以看成是一个三个维度的矩形框,每个元素定义一个大小为[3 3]的数组,这里我称之为B。换句话说,为域中的每个点定义了大小为[3 3] 的B。
我正在尝试将矩形框细分为大小为d×d×d 的小立方体,其中d 是偶数。此外,相邻立方体之间应该有50% 重叠和 .例如,假设:
A; % size(A) = [14 16 20 3 3];
d = 4;
在上面的例子中,采样将如下所示。立方体连同A 的第一维,即1:14 将包括A 的以下元素:
cube1: 1, 2, 3, 4
cube2: 3, 4, 5, 6
cube3: 5, 6, 7, 8
cube4: 7, 8, 9, 10
cube5: 9, 10,11,12
cube6: 11,12,13,14
沿着A的第二个维度,即1:16,我们有:
cube1: 1, 2, 3, 4
cube2: 3, 4, 5, 6
cube3: 5, 6, 7, 8
cube4: 7, 8, 9, 10
cube5: 9, 10,11,12
cube6: 11,12,13,14
cube7: 13,14,15,16
最后沿着A的第三维,即1:20:
cube1: 1, 2, 3, 4
cube2: 3, 4, 5, 6
cube3: 5, 6, 7, 8
cube4: 7, 8, 9, 10
cube5: 9, 10,11,12
cube6: 11,12,13,14
cube7: 13,14,15,16
cube8: 15,16,17,18
cube9: 17,18,19,20
现在Anew 将具有[6 7 9 3 3] 的大小,其每个元素的值将是B 的每个元素与每个立方体中A 的所有元素的总和。比如Anew(1, 4, 9, 1, 1)其实就是:
A(elements of cube1, elements of cube4, elements of cube9, 1, 1)
或者换句话说,A(1:4, 7:10, 17:20)。因此:
Anew(1, 4, 9, 1, 1) = 0;
for i = 1:4 % cube1 along with first dimension uses 1, 2, 3, 4
for j = 7:10 % cube4 along with the second dimension uses 7, 8, 9, 10
for k = 17:20 % cube9 along with the third dimension uses 17, 18, 19, 20
Anew(1, 4, 9, 1, 1) = Anew(1, 4, 9, 1, 1) + A(i, j, k, 1, 1);
end
end
end
在上面的 for 循环中,A(i, j, k, 1, 1) 在原始域中的点 (i, j, k) 处是 B(1, 1)。有人可以帮助我如何以矢量化方式进行处理吗?
【问题讨论】:
-
那么对于
cube6在第一个维度中它只有三个元素,而同一维度中的其他立方体有四个?这些立方体不应该是相同大小的吗? -
@Divakar:请查看我在问题中的更新。现在所有立方体都有保存数量的元素。