2010-06-14 3 views
2

Ceci est un peu un doublon de this question, this question, et this question, mais ces solutions ne fonctionnent pas, donc je demande le mien.Problème avec l'affectation d'éléments d'un tableau de classes à des variables individuelles dans MATLAB

J'ai un tableau de classes définies localement et je voudrais l'assigner à plusieurs variables individuelles. Ce modèle ne fonctionne pas:

%a is 2x1 of MyClass 
temp = mat2cell(a); 
[x,y] = temp{:}; 

%throws: 
??? Insufficient number of outputs from right hand side of equal sign to satisfy assignment. 

Parce que temp est une seule cellule, avec mon tableau de 2x1 dans une cellule, au lieu d'un réseau de cellules de 2x1 avec un élément de chacun de mon tableau original dans une cellule.

Des idées?

Répondre

3

Vous devez utiliser la fonction NUM2CELL au lieu de la fonction MAT2CELL afin de placer chaque élément de votre tableau a dans une cellule séparée de votre réseau de cellules temp.

En utilisant MAT2CELL avec une seule entrée équivaut à faire temp = {a};, et dans ma version de Matlab (R2009a) je reçois effectivement cet avertissement:

>> temp = mat2cell(a); 
Warning: Single input behavior is obsolete and will be removed in a 
     future release of MATLAB. Use C={X} instead. 
> In mat2cell at 54 
+1

Merci. Avec mat2cell échouant, je n'ai pas pris la peine de regarder num2cell. Frakin 'mathworks. Les docs disent: "C = num2cell (A) convertit le tableau numérique A dans le tableau de cellules C", mais continuez en disant: "num2cell fonctionne pour tous les types de tableau." – Marc

Questions connexes