File Exchange

image thumbnail

NANCAT

version 1.0 (2.27 KB) by

Like CAT, but padding with NaNs. Doesn't complain if input sizes heterogeneous. Faster than CATPAD.

0 Downloads

Updated

View License

I wrote this some years back before I knew CATPAD existed. I'm putting it out here because it's between 2 to 4.5 times faster.

Syntax:

  X = NANCAT( DIM, X1, X2, ... )

concatenates along dimension DIM, but doesn't complain if the items are all of different sizes. Pads the smaller matrices with NAN.

Generalises fully to N dimensional arrays.

  X = NANCAT( DIM, X..., 'padvalue', P )

Pads with the value P rather than NAN. P must be a scalar.

Also handles cell arrays and char arrays; default padding cell is { [] }, and default char is ' '.

 X = NANCAT( DIM, X..., 'alignend')

Aligns the new items at the end of the dimensions being padded - i.e. the padding goes "in front". For example,

  NANCAT(1,[1 2 3; 4 5 6], [7 8])
  ans =
     [ 1 2 3
       4 5 6
       7 8 nan ]

but
  NANCAT(1, [1 2 3; 4 5 6], [7 8], 'alignend')
  ans =
     [ 1 2 3
       4 5 6
      nan 7 8 ]

Notes for unusual cases:
* If any concatenands are cells, the output is a cell.
* If any of the concatenands are numeric, they are turned into cell arrays with num2cell.
* If the first operand isn't a cell, but later ones are, we default to padding with { [nan] }, rather than { [] }.
* Unlike CATPAD it does not return a flag matrix. Maybe that's why it's faster.

Comments and Ratings (1)

Carl

Carl (view profile)

Many thanks for the code Sanjay, much faster than catpad

MATLAB Release
MATLAB 7.4 (R2007a)
Tags Add Tags

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video