Difference between accessing cell elements using curly braces and parentheses

cell-array, matlab

Solution

Think of cell array as a regular homogenic array, whose elements are all `cell`s. Parentheses (`()`) simply access the `cell` wrapper object, while accessing elements using curly bracers (`{}`) gives the actual object contained within the cell.

For example,

A={ [5,6], 0 , 0 ,0 };

Will look like this:

The syntax of making an element equal to `[]` with parentheses is actually a request to delete that element, so when you ask to do `foo(i) = []` you remove the i-th cell. It is not an assignment operation, but rather a `RemoveElement` operation, which uses similar syntax to assignment.

However, when you do `foo{i} = []` you are assigning to the i-th cell a new value (which is an empty array), thus clearing the contents of that cell.

Problem

What is the difference between accessing elements in a cell array using parentheses `()` and curly braces `{}`? For example, I tried to use `cell{4} = []` and `cell(4) = []`. In the first case it sets the 4th element to `[]`, but in the second case it wiped out the cell element, that is, reduced the cell element count by 1.

Original source

Related problems