1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- function paddedArray = myPadArray( myArray, padSize, valForPadding )
- % function newf = myPadArray( myArray, padSize, valForPadding )
- %
- % BRIEF:
- % Quite the same thing as matlabs padarray, but significantly faster ( about
- % ~10 times)
- %
- % author: Alexander Freytag
- % date : 28-02-2014 ( dd-mm-yyyy )
- if ( numel ( padSize ) < 2 )
- padSize = [padSize, padSize];
- end
-
- if ( (ndims ( myArray ) > 2 ) && (numel ( valForPadding ) ~= size(myArray,3) ) )
- valForPadding = repmat ( valForPadding, size(myArray,3),1 );
- end
- classOfMyArray = class ( myArray );
-
- newsize = size( myArray );
- newsize(1) = newsize(1)+2*padSize(1);
- newsize(2) = newsize(2)+2*padSize(2);
-
- startpos = [padSize(1)+1, padSize(2)+1];
- endpos = startpos+[size( myArray,1 ), size( myArray,2 )]-1;
-
- % be safe about not changing the classtype of the padded array
- valForPadding = cast ( valForPadding, classOfMyArray);
-
-
-
- if ( ndims ( myArray ) == 3 )
- % create 'plain' array
- paddedArray = ones( newsize, classOfMyArray );
- for i=1:size(myArray,3)
- paddedArray(:,:,i) = valForPadding(i)*paddedArray(:,:,i);
- end
-
- % set original content to according position
- paddedArray (startpos(1):endpos(1), startpos(2):endpos(2), :) = myArray;
-
- elseif ( ndims ( myArray ) == 2 )
- % create 'plain' array
- paddedArray = valForPadding*ones( newsize, classOfMyArray );
-
- % set original content to according position
- paddedArray (startpos(1):endpos(1), startpos(2):endpos(2) ) = myArray;
- else
- disp('Number of feature dimensions does not match!')
- end
- end
|