Be the first to rate this file! 12 Downloads (last 30 days) File Size: 2.27 KB File ID: #40416

NANCAT

by

 

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

| Watch this File

File Information
Description

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.

Required Products MATLAB
MATLAB release MATLAB 7.4 (R2007a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.

Contact us