### Generating Matrices

MATLAB software provides four functions that generate basic matrices.

zeros All zeros

ones All ones

rand Uniformly distributed random elements

randn Normally distributed random elements

Here are some examples:

```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 load Function

The load 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:

```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

`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.

### M-Files

You can create your own matrices using M-files, 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

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

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

```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:

```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 delete rows and columns from a matrix using just a pair of square brackets. Start with

`X = A;`

Then, to delete the second column of X, use

`X(:,2) = []`

This changes X to

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

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

`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

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

results in

```X =
16     9     2     7    13    12     1```