Matlab 一种高效快速的阵列阵列阵列设计方法

Matlab 一种高效快速的阵列阵列阵列设计方法,matlab,performance,zero-pad,Matlab,Performance,Zero Pad,我试着padarray1000多个图像。但是,当我计时代码时,这一特定行需要的时间最多 I=abs(padarray(I, [2, 2], 'replicate', 'both')); 主要是因为padarray算法的第35行(内部探查器):images\private\padarray\u algo b=a(aIdx{:}) 有什么办法提高效率吗?也许用另一种方法?谢谢 您可以使用和获得相同的结果: r=@repmat; pad=@(I,d)[r(I(1),d) r(I(1,:),d(

我试着
padarray
1000多个图像。但是,当我计时代码时,这一特定行需要的时间最多

I=abs(padarray(I, [2, 2], 'replicate', 'both'));
主要是因为
padarray
算法的第35行(内部探查器):images\private\padarray\u algo

b=a(aIdx{:})

有什么办法提高效率吗?也许用另一种方法?谢谢

您可以使用和获得相同的结果:

r=@repmat;
pad=@(I,d)[r(I(1),d)    r(I(1,:),d(1),1)   r(I(1,end),d)
       r(I(:,1),1,d(2)) I                  r(I(:,end),1,d(2))
       r(I(end,1),d)    r(I(end,:),d(1),1) r(I(end),d)];
用法:

pad(I,[2 2])
如果所有图像大小相同,您可以创建图像的线性索引矩阵,并对其应用
padarray
,然后使用填充索引数组来填充图像:

%create matrix of indices
Idx = reshape(1:numel(I),size(I));
%pad the index
Idx_padded = padarray(Idx, [2, 2], 'replicate', 'both'); 
%use the padded index to pad images
result = I(Idx_padded);
result2 = I2(Idx_padded);

第一个方法或多或少是因为多次调用函数。然而,第二种方法是天才!这节省了我几天的计算时间。非常感谢你!