Azzera filtri
Azzera filtri

extracting submatrices from cell

1 visualizzazione (ultimi 30 giorni)
Daniel
Daniel il 27 Apr 2013
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.

Risposta accettata

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

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by