Cell Array referencing question

7 vues (au cours des 30 derniers jours)
Rick
Rick le 4 Juil 2014
Commenté : the cyclist le 5 Juil 2014
Hello,
Suppose I have
A = {1 2}
A =
[1] [2]
and
B = {[1 2]}
B =
[1x2 double]
I am wondering, why are these different. Matlab Says A is a 1x1 cell, and B is a 1x2 cell. I am confused about what matlab is doing when it sees this and why it is being classified as such.
  1 commentaire
the cyclist
the cyclist le 5 Juil 2014
You might learn from this introduction to cell arrays.

Connectez-vous pour commenter.

Réponse acceptée

the cyclist
the cyclist le 4 Juil 2014
Your first statement is syntactically equivalent to
A = {[1],[2]};
This is specifying that A is a 1x2 cell array, where the first element is the length-1 vector [1], and the second element is [2].
In your second statement,
B = {[1 2]}
you have specified that B is a 1x1 cell array, where the contents of that one cell is the 1x2 vector [1 2].
Does that help?
  2 commentaires
Rick
Rick le 4 Juil 2014
How is matlab reading this?
B = {3,4}; C = [{3},{4}];
They are equivalent. B has two cells in one cell array. C is two cell arrays each containing one cell. Why are they the same?
the cyclist
the cyclist le 5 Juil 2014
Modifié(e) : the cyclist le 5 Juil 2014
In your first example, B is the direct specification of a 1x2 cell array.
In your second example, {3} is a 1x1 cell array, {4} is a 1x1 cell array, and then C is the concatenation of those "horizontally", creating a 1x2 cell array.
Hence, the equivalence.

Connectez-vous pour commenter.

Plus de réponses (1)

Ben11
Ben11 le 4 Juil 2014
Modifié(e) : Ben11 le 4 Juil 2014
Actually B contains a 1x2 double and it contains only 1 element (a 1x2 vector) whereas A contains 2 elements, i.e. 2 1x1 vectors if you wish

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by