自定义多维数组的子数组

1视图(30天)
美联社
美联社 2014年5月30日
回答: 马特·J 2014年5月31日
我有一个数组 一个 有大小 [N1 N2 N3 3 3] 。数组 一个 可以被视为一个矩形框在三维空间中,它的每个元素,数组的大小 [3 3] 定义,这里我所说的吗 B 。换句话说, B 与大小 [3 3] 为每个点定义的域。
我想细分成小方块的矩形框的大小 d××d ,在那里 d 是一个偶数。此外,应该有 50% 重叠相邻方块。例如,让我们说:
一个;%的大小(A) = (14 16 20 3 3);
d = 4;
在上面的例子中,抽样将如下所示。第一个维度的数据集和 一个 ,也就是说, 一14 将包括以下元素的 一个 :
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
第二个维度 一个 ,也就是说, 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
最后在第三维度 一个 ,也就是说, 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
现在 重新 将有一个大小 (6 7 9 3 3) 和的值在每个元素将每个元素的总和 B 在所有的元素 一个 每个多维数据集。例如, 重新(1、4、9、1、1) 实际上是:
(cube4 cube1元素,元素,元素cube9, 1, 1)
换句话说, (1:4,7:10,十七20) 。因此:
重新(1、4、9、1 1)= 0;
i = 1:4% cube1沿着第一维度使用1,2,3,4
j = 7:10% cube4沿着二维使用7,8,9,10
k =十七20% cube9沿着第三维度使用17,18,19,20
重新(1、4、9、1 1)重新= (1、4、9、1,1)+ (i, j, k, 1, 1);
结束
结束
结束
在上面的for循环, (i, j, k, 1, 1) B (1,1) (i, j, k) 在最初的域。有人能帮助我,我应该如何处理 vectorize时尚 吗?

答案(1)

马特·J
马特·J 2014年5月31日
我推荐以下,它使用两个FEX提交 interpMatrix KronProd
F =全(interpMatrix([1 1 1 1] 1 11日2))”;
P = F(1:6,一14);
Q = F (1:7, 1:16);
R = F (1:9, 1:20);
K = KronProd ({P, Q, R, 1},(1 2 3 4 4],[南、南、南3 3]);
重新= K *;

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!