Main Content

cat

Concatenate arrays

Description

C = cat(dim,A,B) concatenates B to the end of A along dimension dim when A and B have compatible sizes (the lengths of the dimensions match except for the operating dimension dim).

example

C = cat(dim,A1,A2,…,An) concatenates A1, A2, … , An along dimension dim.

You can use the square bracket operator [] to concatenate or append arrays. For example, [A,B] and [A B] concatenates arrays A and B horizontally, and [A; B] concatenates them vertically.

example

Examples

collapse all

Concatenate two matrices vertically, then horizontally.

Create two matrices, and vertically append the second matrix to the first.

A = ones(3)
A = 3×3

     1     1     1
     1     1     1
     1     1     1

B = zeros(3)
B = 3×3

     0     0     0
     0     0     0
     0     0     0

C1 = cat(1,A,B)
C1 = 6×3

     1     1     1
     1     1     1
     1     1     1
     0     0     0
     0     0     0
     0     0     0

Now, horizontally append the second matrix to the first.

C2 = cat(2,A,B)
C2 = 3×6

     1     1     1     0     0     0
     1     1     1     0     0     0
     1     1     1     0     0     0

Create two 3-D arrays and concatenate them along the third dimension. The lengths of the first and second dimensions in the resulting array match the corresponding lengths in the input arrays, while the third dimension expands.

A = rand(2,3,4);
B = rand(2,3,5);
C = cat(3,A,B);
szC = size(C)
szC = 1×3

     2     3     9

Create a table and add a row using a cell array.

LastName = {'Sanchez';'Johnson';'Li';'Diaz'};
Age = [38;43;38;40];
T1 = table(LastName,Age)
T1=4×2 table
     LastName      Age
    ___________    ___

    {'Sanchez'}    38 
    {'Johnson'}    43 
    {'Li'     }    38 
    {'Diaz'   }    40 

Trow = {'Brown',49};
T2 = cat(1,T1,Trow)
T2=5×2 table
     LastName      Age
    ___________    ___

    {'Sanchez'}    38 
    {'Johnson'}    43 
    {'Li'     }    38 
    {'Diaz'   }    40 
    {'Brown'  }    49 

Concatenate a date character vector, a string date, and a datetime into a single column of dates. The result is a datetime vector.

chardate = '2016-03-24';
strdate = "2016-04-19";
t = datetime('2016-05-10','InputFormat','yyyy-MM-dd');
C = cat(1,chardate,strdate,t)
C = 3x1 datetime
   24-Mar-2016
   19-Apr-2016
   10-May-2016

Create a cell array containing two matrices, and concatenate the matrices both vertically and horizontally.

M1 = [1 2; 3 4];
M2 = [5 6; 7 8];
A1 = {M1,M2};
Cvert = cat(1,A1{:})
Cvert = 4×2

     1     2
     3     4
     5     6
     7     8

Chorz = cat(2,A1{:})
Chorz = 2×4

     1     2     5     6
     3     4     7     8

Input Arguments

collapse all

Dimension to operate along, specified as a positive integer scalar. For example, if A and B are both 2-by-2 matrices, then cat(1,A,B) concatenates vertically creating a 4-by-2 matrix. cat(2,A,B) concatenates horizontally creating a 2-by-4 matrix.

dim must be either 1 or 2 for table or timetable input.

First input, specified as a scalar, vector, matrix, multidimensional array, table, or timetable.

Second input, specified as a scalar, vector, matrix, multidimensional array, table, or timetable.

  • The elements of B are concatenated to the end of the first input along the operating dimension. The sizes of the input arguments must be compatible. For example, if the first input is a matrix of size 3-by-2, then B must have 2 columns to concatenate vertically, and 3 rows to concatenate horizontally.

  • When concatenating horizontally, all table inputs must have unique variable names. When present, row names must be identical, except for order. Similarly, all timetable inputs must have unique variable names. Row times must be identical, except for order.

  • You can concatenate valid combinations of different types. For more information, see Valid Combinations of Unlike Classes.

List of inputs, specified as a comma-separated list of arrays to concatenate in the order they are specified.

  • The inputs must have compatible sizes. For example, if A1 is a row vector of length m, then the remaining inputs must each have m columns to concatenate vertically.

  • When concatenating horizontally, all table inputs must have unique variable names. When present, row names must be identical, except for order. Similarly, all timetable inputs must have unique variable names. Row times must be identical, except for order.

  • You can concatenate valid combinations of different types. For more information, see Valid Combinations of Unlike Classes.

Tips

  • To construct text by horizontally concatenating strings, character vectors, or cell arrays of character vectors, use the strcat function.

  • To construct a single piece of delimited text from a cell array of character vectors or a string array, use the strjoin function.

Algorithms

When concatenating an empty array to a nonempty array, cat omits the empty array in the output. For example, cat(2,[1 2],[]) returns the row vector [1 2].

If all input arguments are empty and have compatible sizes, then cat returns an empty array whose size is equal to the output size as when the inputs are nonempty. For example, cat(2,zeros(0,1),zeros(0,2)) returns a 0-by-3 empty array.

Extended Capabilities

Version History

Introduced before R2006a