J'ai donc un réseau de cellules de vecteurs X:Octave/MATLAB: étendues variables et recherche de noms?
octave:149> X
X =
{
[1,1] =
1 17 20
[2,1] =
5 20 22 27
[3,1] =
2 17 18 21
}
créer un autre vecteur vide Y:
octave:150> Y = []
Y = [](0x0)
J'appelle alors une fonction anonyme sur chaque valeur de X avec « Y = unique, ([Y x]) ":
octave:151> cellfun(@(x)(Y = unique([Y x])),X,'UniformOutput',false)
ans =
{
[1,1] =
1 17 20
[2,1] =
1 5 17 20 22 27
[3,1] =
1 2 5 17 18 20 21 22 27
}
Ok, mais maintenant Y est encore vide:
octave:152> Y
Y = [](0x0)
octave:153>
clairement le nom Y dans la fonction anonyme créé et lié un nouveau stockage pour sa propre version de Y.
Quelles sont les règles de stockage et de résolution de noms dans Octave/Matlab? Quand le stockage est-il alloué pour une variable? Quand deux noms identiques sont-ils liés à la même variable? (Y at-il un moyen d'affecter la valeur de Y dans la fonction anonyme ci-dessus?)
J'essaye de "l'union" accumuler les vecteurs dans le tableau de cellules. A la fin, Y devrait être égal à [1 2 5 17 18 20 21 22 27] ' –
C'est-à-dire que je veux obtenir l'union des vecteurs dans le tableau de cellules. –
Si vous n'avez besoin que de l'ensemble d'étapes sans étapes intermédiaires, vous pouvez utiliser ce qui suit: 'Y = unique ([X {:}])'. Cela utilise le fait que Matlab peut créer des tableaux à partir de [listes séparées par des virgules] (http://www.mathworks.co.uk/help/techdoc/matlab_prog/br2js35-1.html#br2js35-9). Cette solution suppose que tous les vecteurs à l'intérieur de la cellule sont '1xn'. – AE426082