2017-03-14 1 views
0

J'ai un tableau de cellules imbriqué avec un champ pour l'information et un pour une autre cellule. Comment puis-je supprimer une cellule à l'aide d'une variable auxiliaire?Octave Cell Array

Par exemple:

T = début de réseau de cellules

P = T

P = P {2} autant de fois que nécessaire.

P {2} = []

La suppression sur de la cellule n'est pas visible dans la liste originale.

+0

Ce n'est pas possible. Une fois que vous avez assigné 'P = T',' P' est une nouvelle copie de 'T', indépendante de l'original. – beaker

Répondre

0

Je ne pense pas que le code que vous avez fait fasse ce que vous pensez qu'il fait. Octave \ Matlab n'implémente pas le concept de pointeurs dans sa pleine signification.

Comme le dit le bécher, l'opération d'assignation est en cours de copie, donc P = T est un autre tableau de cellules. En fait, pour des raisons de performances, il reste le même tableau jusqu'à ce que vous changiez le contenu de l'un d'entre eux. c'est-à-dire jusqu'à P{2}={}, point auquel T={} et P={[1,1] = [](0x0) [1,2] = {}(0x0)}. (Le P = P{2} ne fonctionne même pas en passant.)

C'est correct, car Octave \ Matlab n'a pas l'intention d'exposer l'adressage mémoire et autres. c'est-à-dire que vous ne pouvez pas déterminer si les variables P et T sont stockées à la même adresse. L'opérateur d'égalité travaille avec des éléments de tableaux et ne fonctionne pas complètement pour les cellules.

Octave \ Matlab sont conçus pour le calcul des nombres. Facilité de création de manipulation arbitraire des structures de données est hors de leur portée. Pour la création de listes, le lien suivant peut être utile, bien que la solution soit relativement complexe: MATLAB linked list