【发布时间】:2016-04-21 13:48:44
【问题描述】:
在 MATLAB 中,我们可以使用im2col 和col2im 来实现列到块之间的转换,例如
>> A = floor(30*rand(4,6))
A =
8 5 2 13 15 11
22 11 27 13 24 24
5 18 23 9 23 15
20 23 14 15 19 10
>> B = im2col(A,[2 2],'distinct')
B =
8 5 2 23 15 23
22 20 27 14 24 19
5 18 13 9 11 15
11 23 13 15 24 10
>> col2im(B,[2 2],[4,6],'distinct')
ans =
8 5 2 13 15 11
22 11 27 13 24 24
5 18 23 9 23 15
20 23 14 15 19 10
我的问题是:使用im2col 滑动模式后
>> B = im2col(A,[2 2],'sliding')
B =
8 22 5 5 11 18 2 27 23 13 13 9 15 24 23
22 5 20 11 18 23 27 23 14 13 9 15 24 23 19
5 11 18 2 27 23 13 13 9 15 24 23 11 24 15
11 18 23 27 23 14 13 9 15 24 23 19 24 15 10
我希望得到一个 4-by-6 矩阵 C 从 B(不知道 A)每个站点的值等于原始值乘以采样次数。
也就是说,C(1,1)=A(1,1)、C(1,2)=A(1,2)*2、C(2,2) = A(2,2)*4
虽然我们可以使用for-loop 轻松实现,但效率极低。那么如何向量化实现呢?
【问题讨论】:
-
你能举例说明你期望的输出是什么吗?还有你用 for 循环生成它的代码
-
显示你想要的输出。显示您的代码。将
B改造成A是微不足道的。我们需要确切地了解您遇到问题的部分。