2017-10-12 21 views
1

J'ai commencé un code où je dois générer beaucoup d'instances d'une classe donnée. Je veux les enregistrer dans un tableau comme je le ferais en python.Comment puis-je générer des instances d'une classe dans Matlab et les enregistrer dans un tableau?

C'est ce que je veux faire:

object_list = []; 
    for i=1:100 
     my_object = MyClass(i) 
     object_list(i) = my_object 
    end 

En Python Cela fonctionne parce que je peux ajouter ce que je veux à ma liste. Comment dois-je faire cela dans Matlab?

/L'erreur est obtenir est la suivante: "La conversion en double de MyClass n'est pas possible." Je suppose que le tableau Matlab se comporte différemment d'une liste python générique, et qu'il doit contenir des doubles./

+1

Vous pouvez également ajouter MATLAB, mais l'ajout n'est pas vraiment une bonne idée. Une meilleure approche consiste à pré-allouer à la longueur attendue. Pour votre cas, vous auriez besoin d'un tableau de cellules. Initialisez donc un tableau de cellules de taille attendue, c'est-à-dire 'object_list = cell (1,100)' et remplacez 'object_list (i)' par 'object_list {i}' c'est-à-dire par accolades. La raison de faire ce changement est exactement ce que le message d'erreur suggère. (Évitez également d'utiliser 'i' (et' j') comme noms de variables car ils représentent des nombres imaginaires par défaut) –

Répondre

0

Vous pouvez initialiser votre tableau comme un tableau d'objets:

object_list(100) = MyClass(100); 
for i=1:100 
    object_list(i) = MyClass(i); 
end 

Plus d'informations sur Initialize Object Arrays.