MATLAB annuler une commande
Je suis en train de développer une base de traitement d'image de l'application sur MATLAB. - Je mettre en place annuler l'état précédent fonctionnalité. J'ai cherché sur net il y a uiundo mais il ne annulations actions d'interface utilisateur. Est-il une simple commande pour l'annuler. Merci.
OriginalL'auteur serdar | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
Si vous avez suffisamment de mémoire libre, vous pouvez stocker tous de votre programme unis dans une structure et ensuite appuyer sur cette structure dans une tampon circulaire. Le nombre d'éléments dans la mémoire tampon de déterminer le nombre de niveaux d'annulation.
OriginalL'auteur learnvst
Il me semble que vous auriez à mettre en place votre propre multi-niveau (ou niveau) d'annuler à l'aide de la Modèle de commande.
Il faudrait que vous enveloppez vos opérations dans des objets qui contiennent la logique pour effectuer l'action et de restaurer l'état. Pas de solution miracle, dur travail nécessaire.
OriginalL'auteur Anonymous
Général annuler va être compliqué, mais si vous êtes uniquement intéressé par l'enregistrement de l'état de MATLAB variables et de revenir à un état enregistré, cela pourrait être une solution possible:
save_state.m:
undo_index.m:
annuler.m:
Ensuite, vous pouvez utiliser
save_state
de sauvegarder l'état de MATLAB variables ou vous pouvez même préfixe toutes vos commandes avecsave_state;
si vous souhaitez garder une trace de toutes les modifications. Lorsque vous souhaitez revenir à un état antérieur de variables, vous pouvez exécuterundo_index
découvrir l'index du dernier état enregistré et vous pouvez exécuterundo
et l'entrée de l'indice donné parundo_index
, ou à défaut, de tout plus petit entier positif pour revenir à un état antérieur de variables. Le premier état enregistré le fichier sera nommésaved_state_000001.mat
, puissaved_state_000002.mat
et ainsi de suite... il faut Noter quesave_state
tout enregistré sur le disque, l'utilisation d'un SSD ou un disque RAM peut être une bonne idée si vous voulez essayer cela dans une boucle avec un grand nombre de données. Notez également que le précédent contenu de la variable appeléeSavedStateFolder
est perdu lorsque vous exécutezsave_state
ouundo
. Pour éviter cela, vous pouvez remplacer toutes les instances deSavedStateFolder
danssave.state.m
etundo.m
codées en dur des noms de dossier, par exemple:save_state.m:
annuler.m:
Note également que
save_state
,undo_index
etundo
supposer que dansSavedStateFolder
il n'y a pas d'autres fichiers à l'exception.
,..
etsaved_state_*.mat
fichiers. Aussi le nombre desaved_state_*.mat
fichiers et l'indice de course à pied pour être sauvé est découvert de cette façon, donc, si vous supprimez quelquesaved_state_*.mat
fichiers sans eg. la création d'un nombre égal de fichiers vides pour les remplacer, les chiffres ne correspondent pas etsave_state
peut enregistrer l'état sur le dessus de l'existence d'un état sauvegardé le fichier.OriginalL'auteur nrz