Logo Background

Working with Matrices in Matlab

  • Written by matlabtutorialsmatlabtutorials No Comments Comments
    Last Updated: August 5, 2009

    Generating Matrices

    MATLAB software provides four functions that generate basic matrices.

    All

    ones All ones

    Uniformly distributed random elements

    randn Normally distributed random elements

    Here are some examples:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Z = zeros(2,4)
    Z =
    0     0     0     0
    0     0     0     0
     
    F = 5*ones(3,3)
    F =
    5     5     5
    5     5     5
    5     5     5
     
    N = fix(10*rand(1,10))
    N =
    9     2     6     4     8     7     4     0     8     4
     
    R = randn(4,4)
    R =
    0.6353    0.0860   -0.3210   -1.2316
    -0.6014   -2.0046    1.2366    1.0556
    0.5512   -0.4931   -0.6313   -0.1132
    -1.0998    0.4620   -2.3252    0.3792

    The Function

    The function reads binary files containing matrices generated by earlier MATLAB sessions, or reads text files containing numeric data. The text file should be organized as a rectangular table of numbers, separated by blanks, with one row per line, and an equal number of elements in each row. For example, outside of MATLAB, create a text file containing these four lines:

    1
    2
    3
    4
    
    16.0     3.0     2.0    13.0
    5.0    10.0    11.0     8.0
    9.0     6.0     7.0    12.0
    4.0    15.0    14.0     1.0

    Save the file as magik.dat in the current directory. The statement

    1
    
    load magik.dat

    reads the file and creates a variable, magik, containing the example matrix.

    An easy way to read data into MATLAB from many text or binary formats is to use the Import Wizard.

    You can create your own matrices using , which are text files containing MATLAB code. Use the MATLAB Editor or another text editor to create a file containing the same statements you would type at the MATLAB command line. Save the file under a name that ends in .m.

    For example, create a file in the current directory named magik.m containing these five lines:

    A = [16.0 3.0 2.0 13.0
    5.0 10.0 11.0 8.0
    9.0 6.0 7.0 12.0
    4.0 15.0 14.0 1.0 ];

    The statement

    magik

    reads the file and creates a variable, A, containing the example matrix.

    Concatenation

    Concatenation is the process of joining small matrices to make bigger ones. In fact, you made your first matrix by concatenating its individual elements. The pair of square brackets, [], is the concatenation operator. For an example, start with the 4-by-4 magic square, A, and form

    1
    
    B = [A  A+32; A+48  A+16]

    The result is an 8-by-8 matrix, obtained by joining the four submatrices:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    B =
     
    16     3     2    13    48    35    34    45
    5    10    11     8    37    42    43    40
    9     6     7    12    41    38    39    44
    4    15    14     1    36    47    46    33
    64    51    50    61    32    19    18    29
    53    58    59    56    21    26    27    24
    57    54    55    60    25    22    23    28
    52    63    62    49    20    31    30    17

    This matrix is halfway to being another magic square. Its elements are a rearrangement of the integers 1:64. Its column sums are the correct value for an 8-by-8 magic square:

    1
    2
    3
    4
    
    sum(B)
     
    ans =
    260   260   260   260   260   260   260   260

    But its row sums, sum(B’)', are not all the same. Further manipulation is necessary to make this a valid 8-by-8 magic square.

    Deleting Rows and Columns

    You can rows and columns from a matrix using just a pair of square brackets. Start with

    1
    
    X = A;

    Then, to the second column of X, use

    1
    
    X(:,2) = []

    This changes X to

    1
    2
    3
    4
    5
    
    X =
    16     2    13
    5    11     8
    9     7    12
    4    14     1

    If you a single element from a matrix, the result is not a matrix anymore. So, expressions like

    1
    
    X(1,2) = []

    result in an error. However, using a single subscript deletes a single element, or sequence of elements, and reshapes the remaining elements into a row vector. So

    1
    
    X(2:2:10) = []

    results in

    1
    2
    
    X =
    16     9     2     7    13    12     1