Home > MATLAB > Viewing the internals of MATLAB Matrices

Viewing the internals of MATLAB Matrices

A cool undocumented trick I just learnt from The MathWorks’ Bob Gilmore. If you type

```format debug
```

Then printing any vector reveals information about its internal representation. For example:

```x = magic(3)

x =

m = 3
n = 3
pr = d8dccf0
pi = 0
8     1     6
3     5     7
4     9     2
```

The structure address is the address in memory where the matrix is stored, `m` and `n` are the number of rows and columns respectively of the matrix, and `pr` and `pi` are pointers to the addresses of the matrices storing the real and imaginary components of the matrix.

One interesting thing to look at is the representation of scalar numbers.

``` y = 1

y =

m = 1
n = 1
pr = d790b90
pi = 0
1
```

Yep: they are stored in exactly the same way as matrices: in the same way the “everything in R is a vector”, everything in MATLAB is a matrix. To finish up, here are some more examples for you to explore:

```% higher dimensional arrays
rand(2, 3, 4)
% cell arrays (unfortunately not that revealing)
{1, magic(3)}
% sparse matrices (very interesting)
sparse(ones(3))
```