Cell
Arrays : variables of different size in a programming environment
Cell arrays
are able to
store variables of different size or
type (very much like structures in other programming languages). It's
the most
versatile data object.
This type of
array in Matlab uses integer indices, just like
an ordinary n-dimensional array of only numbers. An array like
this, use
braces as indexing operators ({}).
As an example, the
following line creates the so called cell array
(CA) containing the string ‘any string’ as element one (that is a{1}),
and a
3-by-4
random matrix as element two (that is a{2}):
a = {'any string', rand(3,
4)};
A CA can be
indexed, so the variable created in the
previous example can be indexed like this:
a{1}
ans = any string
a{2}
ans =
0.7382
0.9355
0.8936
0.1763
0.9169 0.0579
0.4057
0.4103 0.3529
The indexing operator
can also be used to insert or
overwrite elements of a CA. The following code inserts the
scalar
number 5.3 on the third place of the previously created array:
a{3} = 5.3;
Creating Cell Arrays
The example above showed
how to create an array
containing currently available or created variables. In many situations
it is
useful to create a CA and then fill it with data.
The cell function
returns an array of a given size,
containing empty matrices. The following line creates a
3-by-2 array
containing empty matrices:
a
=
cell(3,2)
produces
a =
[]
[]
[]
[]
[]
[]
Just like numerical
matrices, CA can be
multidimensional.
The cell
function accepts a number of positive integers to
describe the size of the returned array. In the following example
an
array is created, and its size is displayed:
a =
cell(3, 4, 5);
size(a)
(produces ans =
3
4
5)
As an alternative to
creating empty cell arrays, and then
filling them, it is possible to convert numerical arrays into cell
arrays using
the num2cell
and mat2cell
functions (type ‘help
num2cell’ or ‘help
mat2cell’ on
the command screen to view an explanation of these built-in functions).
Indexing Cell Arrays
Elements can be inserted
into CA using braces ({}).
Indexing works for these arrays like for matrices.
Accessing values in a
CA is different from the same
operation for numerical arrays. For example, let’s define these three
matrices:
m1
= [1
2 3]
m2 = [9
8 7 6]
m3 = [5
6; 6 1; 9 0]
We can create a cell
array like this:
c = {m1
m2 m3}
this
produces
c = [1x3
double] [1x4
double]
[3x2 double]
and we can access
specific values in this way:
c{1}
(produces
ans = 1
2
3)
c{3}
produces
ans =
5
6
6
1
9
0
c{3}(3,1)
(produces ans = 9)
Cell Arrays of Strings
A common use of CA is to
store multiple
strings in
the same variable. It is possible to store multiple
strings in a matrix by
letting each row be a string. This, however, introduces the problem
that all
strings must be of equal length. Therefore it is recommended to use
cell arrays
to store multiple strings. If, however, the character matrix
representation is
required for an operation, it can be converted to a cell array of
strings using
the cellstr
function.
These five lines of code
m = ['hello'; 'world'];
c =
cellstr(m)
size(c)
c(1)
c(2)
produce these results:
c = 'hello'
'world'
ans = 2
1
ans = 'hello'
ans = 'world'
Manipulating Cells
There are several
functions available for cell manipulation.
Some of these are cellstr,
iscellstr,
cell2struct,
struct2cell,
iscell,
num2cell,
etc. Type help function on
the command screen to see more details regarding the use of those
functions.
cellplot
plots the cell array
schematically, so that we can understand how and where we are saving
our data...
This 4-line code
m2 = [9
8 7 6];
m3 = [5
6; 6 1; 9 0];
c = {m2
m3};
cellplot(c)
produces this image:
so that we can better visualize how we are handling our data.
From
'Cell arrays' to home
From
'Cell
arrays' to 'Matlab Tutorials'
|