Concaténer des tableaux de cellules
Je voudrais concaténer deux tableaux de cellules ensemble. J'ai deux matrices de tailles différentes, et ce que je comprends de la seule façon possible de concaténer ensemble est d'utiliser des tableaux de cellules. Voici mon code
M = magic(3);
B = {magic(3) 'sip' magic(4) magic(3) }
C = {B; ...
B; ...
B; ...
B}
c1 = C{1}{1,1};
c2 = C{1}{1,3};
c{1} = c1; % after extracting matrix from cell array put it it
c{2} = c2; % into another cell array to attempt to concatenate
conca = [c{1};c{2}]; %returns error.
J'obtiens l'erreur suivante:
??? Error using ==> vertcat
CAT arguments dimensions are not
consistent.
Error in ==> importdata at 26
conca = [c{1};c{2}]; %returns error.
OriginalL'auteur Mike Smith | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Je suppose que c'est votre sortie désirée:
Où
conca{1}
est:et
conca{2}
est:Vous avez été en fait très proche. Tous vous avez besoin est de changer la place des accolades pour des accolades. Comme ceci:
En fait je ne comprends pas pourquoi vous avez utilisé
C
et pas juste faitQui va vous donner la même cellule de tableau.
OriginalL'auteur HebeleHododo
c{1}
désigne le contenu d'une cellule, c'est à dire une matrice dans votre cas.[a b]
concatène le clos du contenu, c'est à dire deux matrices (si le même nombre de lignes).Pour concaténer deux tableaux de cellules, se référer à eux comme telle. Pour se référer à des cellules individuelles d'une cellule de tableau, vous pouvez utiliser
()
, par exemplec(1)
. Ainsi,œuvres (ou [c(1);c(2)]), mais pour cet exemple,
est préférable (ou
c(1:2)'
pour une colonne au lieu d'une ligne).Ce qui ne fonctionne pas? Je ne vois pas l'indication dans HebeleHododo réponse du pourquoi de ce que l'OP essayé ne fonctionne pas, ou pourquoi est-ce que je suggère, ne devraient pas travailler. (btw: les deux réponses ont été upvoted la même époque, donc je suppose que l'OP essayé les suggestions et les a trouvés à la fois utile.)
Lorsque les deux tableaux ne sont pas de la même taille, comme dans le cas des OP cas, vous concaténer avec
{}
au lieu de[]
- c'est là que les deux réponses diffèrent, et le vôtre ne fonctionne pas.La version de MATLAB avez-vous utilisé? J'ai du mal à imaginer que jamais cela ne fonctionne pas -- voir le raisonnement ci-dessus. Ou voulez-vous dire de l'hypothétique dans la deuxième phrase? La remarque entre parenthèses, était destinée à expliquer pourquoi l'OP approche ne fonctionne pas: pas le même nombre de lignes (nombre de colonnes n'a pas d'importance, donc, techniquement, même
a
etb
il y peuvent être de tailles différentes dans une seule dimension).Je suppose que nous avons été la lecture de la question différemment. Lorsque l'OP dit des "matrices de valeurs différentes", j'ai pensé montrant comment faire face à cela était la bonne approche. La concaténation comme vous ne l'avez peut techniquement pas générer une erreur dans le code exact comme écrit, mais il nous a semblé e de l'OP voulait une réponse face à de telles choses comme
magic(3)
etmagic(4)
, ce qui serait différent dans les deux lignes et les colonnes. Probablement pas la peine de développer...OriginalL'auteur arne.b