extracting submatrices from cell

3 次查看(过去 30 天)
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.

采纳的回答

Ahmed A. Selman
Ahmed A. Selman 2013-4-27
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 个评论
Daniel
Daniel 2013-4-27
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 2013-4-27
(,) is a portioning, or concatenation process; while
{,} is an extraction, or transformation one .. :)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by