Dans MATLAB, je peux définir plusieurs fonctions dans un fichier, seule la seule fonction définie étant visible externe à ce fichier. Sinon, je peux mettre chaque fonction dans son propre fichier et les rendre visibles globalement à travers le chemin. J'écris une application pilotée par menu, où chaque élément de menu exécute une fonction différente. Actuellement, ceux-ci sont tous dans un grand fichier, qui devient de plus en plus difficile à naviguer. Ce que je voudrais faire, c'est mettre des groupes de fonctions connexes dans des fichiers distincts. P>
Je pense que je peux faire quelque chose comme celui-ci en mettant tout l'enfant qui fonctionne dans un répertoire distinct puis en ajoutant le répertoire au chemin de ma fonction mère, mais cela se sent un peu désordonné et inélégant. p>
Quelqu'un peut-il faire une meilleure suggestion? P>
Note: Je connais le plus le plus avec Matlab 2006, mais je suis en train de passer à Matlab 2009. em> p>
3 Réponses :
Peut-être quelque chose comme ça,
path(pathdef)
+1 Parce que c'est une solution raisonnable que j'avais envisagé.
Si les fichiers figurent dans une hiérarchie de dossiers, vous pouvez également les ajouter à tous avec addpath (GenPath (chemin)); code>. Notez que la commande genpath code> est généralement très lente.
Une suggestion, qui éviterait de devoir modifier le chemin MATLAB A >, est d'utiliser un Répertoire de fonctions privées . Par exemple: p>
Disons que vous avez une fonction appelée Le sous-répertoire test.m code> dans le répertoire \ matlab \ temp \ code> (qui est déjà sur le chemin MATLAB). S'il y a des fonctions locales dans test.m code> que vous souhaitez placer dans leurs propres fichiers M et que vous voulez seulement test.m code> pour leur avoir accès, vous le souhaitez Créez d'abord un sous-répertoire dans \ matlab \ temp \ code> appelé privé code>. Ensuite, placez la fonction locale individuelle M-Files à partir de test.m code> dans cet privé code> sous-répertoire. P>
privé code> n'a pas besoin d'être ajouté au chemin MATLAB (en fait, il ne doit pas être ajouté em> être ajouté au chemin pour fonctionner correctement) . Seuls le fichier test.m code> et d'autres fichiers M dans le répertoire au-dessus de la sous-répertoire privé code> ont accès aux fonctions qu'il contient. Utilisation de fonctions privées, vous pouvez imiter efficacement le comportement de Fonctions locales A > (c.-à-d. Portée limitée, surcharge de fonction, etc.) sans avoir à mettre toutes les fonctions dans le même fichier M (qui peut être très grande pour certaines applications). P>
Je ne savais pas que tu pouvais faire ça. Je vais lui donner un aller pour voir comment ça marche. Au moins tous les fichiers de fonction seront cachés dans un coin tranquille!
On dirait que les documents liés ici ont été supprimés! Les répertoires de la fonction privée sont-ils considérés comme obsolètes?
@Dan: Non, pas obsolète. Juste un ancien, mauvais lien puisque TMW a mis à jour leurs documents en ligne. J'ai édité dans les nouveaux liens.
Vous pouvez utiliser des sous-dossiers qui commencent par "+" pour séparer les fonctions dans des espaces de noms.
Par exemple: P>
Placez une fonction "Barre" dans le dossier "+ FOO" P >
foo.bar() % prints hello world
Related: Stackoverflow.com/questions/8883499/...