extracting submatrices from cell

3 views (last 30 days)
Consider the following bit of code:
X={1, 'a'; 'b', 3.14};
X(2,:)
X{2,:}
It produces the following output:
ans = 'b' [3.1400]
ans = b
ans = 3.1400
Can anyone explain to me the reason for the difference. I would have expected the statement X(2,:) to fail and that X{2,:} would have produced what X(2,:) did, in fact, produce.

Accepted Answer

Ahmed A. Selman
Ahmed A. Selman on 27 Apr 2013
Try the same example with:
X={1, 'a'; 'b', 3.14};
K1=X(2,:)
[K21 K22]=X{2,:}
Then use
whos
to see that K1 is a cell, i.e., it only puts part from X into K1, while [K21 K22] is [char double], extracting the contents of the cell into a matrix. The first operation (K1) is another way for cell concatenation.
  2 Comments
Daniel
Daniel on 27 Apr 2013
Thanks for your answer. So X(2,:) is the same as {X{2,:}}. While I can clearly see this is true, I was hoping to see why this is true. How are
( , )
and
{ , }
defined so that I can predict the outcome of these commands.
Ahmed A. Selman
Ahmed A. Selman on 27 Apr 2013
(,) is a portioning, or concatenation process; while
{,} is an extraction, or transformation one .. :)

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!