53 votes

Comment visualiser une structure de projet dans MATLAB?

Je suis devenu propriétaire de plusieurs milliers de lignes de code Matlab, certaines comme> 900 fonctions de ligne et quelques répertoires contenant des fichiers function_name.m . Il est difficile de comprendre ce que tout fait (ou de se rapporter à) ou de déterminer les dépendances. Que suggéreriez-vous pour visualiser la structure des fonctions, telles que les fonctions appelées à partir de quoi et dans quelle séquence?

44voto

ptomato Points 24461

Port de NumPy.

(Plaisanterie).

Généralement dans Matlab vous avez des fichiers écrits comme des fonctions, et quelques scripts. Les Scripts de faire des choses comme charger les données que vous souhaitez traiter, et le nourrir à l'fonctions, et graphique.

Pour organiser les choses que j'ai commencé à le script de haut niveau et de trouver les fonctions qui ne le chargement, de dessin, de traitement, etc. Garder les scripts dans un répertoire de niveau supérieur et d'essayer de séparer les fonctions dans les sous-répertoires en fonction de la finalité de la fonction. Mettre les dépendances d'une fonction dans le même sous-répertoire. Essayez de faire en sorte qu'aucun code dans un répertoire dépend de quoi que ce soit dans un répertoire parent (ou le cousin de répertoire).

Chaque fois que vous comprendre ce qu'est une fonction et ses arguments sont, écrire une doc commentaire.

Cela suppose que la personne qui a écrit le code était raisonnable. Si non, Matlab rend facile à gratter tout en bas dans un répertoire et tout dépend de tout le reste dans une tour branlante de code, de sorte que vous pouvez faire beaucoup de refactoring.

14voto

Jonas Points 54073

Votre code vient-il avec un texte d'aide décent? Dans ce cas, m2html sera une aide précieuse , car il vous permet de créer une aide HTML liée pour faciliter la navigation.

En outre, il vous permet de créer des graphiques de dépendance, qui vous aident à comprendre un peu mieux comment vous souhaitez organiser le code.

13voto

MatlabDoug Points 4587

J'ai eu à faire face à ce problème de nombreuses fois dans mes différents rôles à La MathWorks. C'est ce que je fais pour les grands morceaux de code MATLAB:

  1. En arrière jusqu'à, peut-être deux fois!
  2. Tout sélectionner, Ctrl-I de la smart tiret
  3. Tout sélectionner, Ctrl-J pour envelopper les commentaires

  4. Si je me sens à base de papier - Impression de tous les fichiers, et d'obtenir un ensemble de surligneurs - suivre manuellement, en soulignant à long terme de variables et d'importants appels de fonction.

~~~ ET / OU ~~~

5 Si je me sens chanceux, commencer l'exécution du code dans le débogueur, pas à pas à travers une ligne à la fois (pas à pas dans subfunctions qui ont été utilisateur écrit)

À ce stade, je peux traverser et suivre un flux typique à travers la structure de contrôle. Je ne peut pas avoir une grande idée de ce que tout n', mais je en avoir une bonne idée de ce qui se passe.

Normalement, mon objectif est de trouver un bug, résoudre et d'avancer. Vos objectifs peuvent être totalement différents. C'est la méthode que j'ai utilisé pour rapidement comprendre hundereds de différents morceaux de code MATLAB que j'ai été envoyé au fil des ans.

7voto

Matthew Simoneau Points 2498

Les instructions de MATLAB relatives aux styles de programmation de Richard Johnson constituent une bonne ressource.

7voto

Ursa Major Points 222

quelques suggestions sur Matlab convention de codage:

  1. utilisation addpath pour éviter de fichiers qui encombrent et aider dans les fonctions taxnomony

  2. briser section_ pour des scripts fonctionnels ou ensemble pour le conditionnel s'exécute, cela peut aussi les aider dans plug-in/ out de modules et de ré-utilisation ou le code de référencement.

  3. utiliser un fichier de configuration pour activer et désactiver les options

  4. avoir un aperçu de l'ensemble architectural des constructions, ainsi que le modus operandi
  5. conserver un état/ fichier lisezmoi ( vous traiter comme un nouvel utilisateur, comment feriez-vous pour aider à rendre assimilable dans le cadre d'un nouveau-utilisateur module ou partie des solutions de façon transparente? si vous revenez sur le code 3 mois plus tard, le sentiment de perte ou de l'impossibilité de retrouver quelque chose qui est mal.) Ma suggestion: tenir un journal pour affiner vos pensées sur le maintien de perfides projets. Garder perfectionner votre art!
  6. pour les équations, l'utilisation de latex pour les documentations (et de le garder à proximité, dans un dossier intitulé par exemple. documents, de s'assurer qu'ils sont facilement accessibles et traçabilité - si vous devez utiliser la "recherche" sur votre disque dur, quelque chose de mal avec la gestion de projet)
  7. briser les codes de modules courts pour la localisation et la plus courte des codes, avec moins de défilement, le code sera plus facile à retracer.
  8. significatif des variables et les noms de fonction (java style semble beau, par exemple. 'backedupDataForVerification'), ne lésine pas à raccourcir les mots, vous allez souffrir plus tard
  9. dans la conception, la re-pense que si vous devez utiliser la fonction de script, ou OO (orienté objet)
  10. ne pas hâte prématuré optimatization, pour la vitesse matlab n'est pas le meilleur choix. Si vraiment vous devez, garder un aucune version optimisée pour les côte-à-côté lisibilité de comparaison, le dépannage et débogage ne seront pas moins d'une malédiction.
  11. Toujours, toujours, toujours commenter vos codes. Ne jamais utiliser l'excuse de ne pas avoir de temps, vous ne perdrez plus de temps plus tard.
  12. pour la différenciation, à envisager de créer un nouveau nœud pour les modifications de code, par exemple. ensemble un arbre pour différencier les versions.

  13. utiliser un dossier distinct pour les entrées/ sorties, les images, les résultats intermédiaires, etc.

  14. l'utilisation d'horodatage pour le suivi de vos versions

  15. partager vos codes avec quelqu'un d'autre, si ils trouvent qu'il est difficile de maintenir, d'utiliser ou de modifier, de réflexion sur les moyens de perfectionner vos constructions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X