【发布时间】:2015-06-03 23:10:48
【问题描述】:
我有一个m x m 矩阵M,我对它的不同部分进行采样以生成k 子数组到n x n x k 矩阵N。我想知道的是:如果没有 for 循环,这可以有效地完成吗?
这是一个简单的例子:
M = [1:10]'*[1:10]; %//' Large Matrix
indxs = [1 2;2 1;2 2];
N = zeros(4,4,3); %// Matrix to contain subarrays
for i=1:3,
N(:,:,i) = M(3-indxs(i,1):6-indxs(i,1),3-indxs(i,2):6-indxs(i,2));
end
在我的实际代码中,矩阵 M 和 N 相当大,并且此操作循环了数千次,因此这种低效率对运行时造成了重大影响。
【问题讨论】:
-
您可以使用 parfor(在 gpu 上并行运行)来最大化速度,但我认为没有办法不使用 for 循环。
标签: performance matlab matrix vectorization matrix-indexing