Programming

Matrix Concatenation Functions

The following functions combine existing matrices to form a new matrix.

 Function Description cat Concatenate matrices along the specified dimension horzcat Horizontally concatenate matrices vertcat Vertically concatenate matrices repmat Create a new matrix by replicating and tiling existing matrices blkdiag Create a block diagonal matrix from existing matrices

Examples

Here are some examples of how you can use these functions.

Concatenating Matrices and Arrays.   An alternative to using the [] operator for concatenation are the three functions cat, horzcat, and vertcat. With these functions, you can construct matrices (or multidimensional arrays) along a specified dimension. Either of the following commands accomplish the same task as the command C = [A; B] used in the section on Concatenating Matrices:

• C = cat(1, A, B);       % Concatenate along the first dimension
C = vertcat(A, B);      % Concatenate vertically

Replicating a Matrix.   Use the repmat function to create a matrix composed of copies of an existing matrix. When you enter

• repmat(M, v, h)

MATLAB replicates input matrix M v times vertically and h times horizontally. For example, to replicate existing matrix A into a new matrix B, use

• A = [8 1 6; 3 5 7; 4 9 2]
A =
8   1   6
3   5   7
4   9   2

B = repmat(A, 2, 4)
B =
8   1   6   8   1   6   8   1   6   8   1   6
3   5   7   3   5   7   3   5   7   3   5   7
4   9   2   4   9   2   4   9   2   4   9   2
8   1   6   8   1   6   8   1   6   8   1   6
3   5   7   3   5   7   3   5   7   3   5   7
4   9   2   4   9   2   4   9   2   4   9   2

Creating a Block Diagonal Matrix.   The blkdiag function combines matrices in a diagonal direction, creating what is called a block diagonal matrix. All other elements of the newly created matrix are set to zero:

• A = magic(3);
B = [-5 -6 -9; -4 -4 -2];
C = eye(2) * 8;

D = blkdiag(A, B, C)
D =
8   1   6   0   0   0   0   0
3   5   7   0   0   0   0   0
4   9   2   0   0   0   0   0
0   0   0  -5  -6  -9   0   0
0   0   0  -4  -4  -2   0   0
0   0   0   0   0   0   8   0
0   0   0   0   0   0   0   8

 Concatenating Matrices Generating a Numeric Sequence