我正在尝试从一个大矩阵中获取3×3掩模,转换为向量。目前,这是我的代码:
A=rand(3264,2448)
[rows cols]=size(A);
T=zeros(9,prod(size(A)-2));
for i=1:rows-2
for j=1:cols-2
T(:,(i-1)*cols+j)=reshape(A(i:i+2,j:j+2),[9 1]);
end
end
目前,这需要相当长的时间。我可以用什么方法加快速度?我在考虑使用meshgrid和arrayfun,但还不能完全理解它们。
谢谢!
=rows-1 & testrow=rows-2) T(:,j)=A([i;i+1;i+2;i+rows;i+rows+1;i+rows+2;i+2rows;i+2rows+1;i+2rows+2]); end end - user2434350im2col
... - blaim2col
。顺便说一下,我相信你的for
循环中有一个错误,这会稍微减慢它们的速度。你正在重新分配内存。T
的输出维度与你通过zeros
指定的不同。要么就需要用不同的方法分配T
,要么就需要使用T(:,(i-1)*(cols-2)+j)=...
。不断扩展数组是拖慢速度的必然方式。 - horchler