MATLAB Answers

Cell Array, Example From Manual

8 views (last 30 days)
I'm working on an example in the fundamental manual. I'm note sure if I understand what is happening.
Create a cell array
C = {'one','two','three';1,2,3},
{'one'} {'two'} {'three'}
{[ 1]} {[ 2]} {[ 3]}
Create a subset of the cell array
upperLeft = C(1:2,1:2)
{'one'} {'two'}
{[ 1]} {[ 2]}
I tried to do as above in creating the subset. I was thinking the code below should copy the cell array but it gives an error. I'm not sure I'm understanding what is going on when I do this.
CopyArray = C(1:2,1:2,1:2)
Any help will be appreciated,


Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 28 Apr 2020
Edited: James Tursa on 28 Apr 2020
The variable C is only a 2D variable having two dimensions. You have requested indexing into a third dimension
with that last 1:2, hence the error. Similar to doing this:
>> M = [1 2 3;4 5 6]
M =
1 2 3
4 5 6
>> M(2,3)
ans =
>> M(2,3,1:2)
Index exceeds matrix dimensions.
What was the expected result of what you tried? Maybe we can guide you to the correct syntax to get the result you wanted.


Show 1 older comment
Stephen Cobeldick
Stephen Cobeldick on 28 Apr 2020
Darnell Gawdin's "Answer" moved here:
I did not understand fully that this is a 2 x 3 matrix and the indices represent a range of cells
I tried this to essentially copy all the cells to a new variable
CopyArray = C(1:2,1:2,1:2)
This did not work because I've added an extra dimension that isn't there. Its not a x,y,z array only a x,y array.
I've changed it to ...
CopyArray = C(1:2,1:3)
the indices now specify a range of rows from 1 to 2 and column range 1 to 3.
James Tursa
James Tursa on 28 Apr 2020
Yes, C(1:2,1:3) is the subset of C containing rows 1-2 and columns 1-3 of C.
Darnell Gawdin
Darnell Gawdin on 28 Apr 2020
thanks for your help, I needed a little push.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!