est-il possible de créer une enveloppe autour d'une fonction qui a exactement le même nom que la fonction d'origine? p>
Cela serait très utile dans les circonstances où l'utilisateur souhaite effectuer des vérifications supplémentaires sur les variables d'entrée avant de passer à la fonction intégrée Comment interrompre le matlab IDE quand il est suspendu à l'affichage d'une très grande matrice? P>
3 Réponses :
Oui c'est possible mais cela nécessite un peu de piratage. Il exige que vous copiez des poignées de fonction.
à l'aide de l'exemple fourni dans la question que je montrerai comment envelopper la fonction En outre, cela devrait fonctionner lorsque l'utilisateur double-clique sur une variable dans le volet d'espace de travail de l'IDE MATLAB. P> Nous devons faire trois choses. P> exemple de fonction p> une fois que cette fonction est définie, vous devez simplement exécuter un script P> exemple script: p> Enfin, lorsque vous souhaitez tout nettoyer, vous pouvez simplement appeler: P> openvar code> dans une fonction définie par l'utilisateur qui vérifie la taille de la variable d'entrée et Permet ensuite à l'utilisateur d'annuler toute opération ouverte pour les variables trop grandes. p>
openvar code> fonction li>
openvar code> li>
openvar code> Nom sur notre nouvelle fonction. LI>
ol>
openvar code> li>
openvarwrapper code> pour configurer la connexion li>
openvar code> à
openvarwrapper code> li>
ul>
clear openvar;
Il devrait être plus facile d'obtenir la poignée à la fonction ombragée, juste du filepath à préciser. Votre solution nécessite une initialisation (chaque fois que vous utilisez Effacer tout code>). Ma solution nécessite un CD'ing sur le chemin et le dos, mais c'est tout le piratage. J'espère toujours que quelqu'un va avec une meilleure façon: p
En fait, sinon la réponse de Slayton, vous n'avez pas besoin d'utiliser Pour éviter de faire appel à votre propre fonction de manière récursive, vous pouvez appeler la fonction d'origine de l'enveloppe à l'aide de E.g. p> exemple simple, nommé openvar code>. Si vous définissez une fonction avec le même nom que la fonction MATLAB, il sera ombragé cette fonction (c'est-à-dire appelée à la place).
intégré code>. P>
rand.m code> et dans le chemin MATLAB: p>
function out = main(varargin)
disp('Test wrapping rand... calling rand now...');
out = builtin('rand', varargin{:});
Mais il y a tellement de fonctions qui ne sont pas «intégrées» et je veux tous les envelopper!
@Guntherstruyf: Pourquoi voudriez-vous tous les envelopper ... en particulier les non-bâtiments ??
Au travail, nos installations MATLAB sont en lecture seule, alors modifier les fichiers eux-mêmes n'est pas possible. Et il n'est pas pratique d'utiliser toujours myFunInstead de plaisir. surtout quand il s'agit d'améliorer le comportement par défaut. Application du monde réel: Daniel Kessler's Problème
Je préfère l'approche de Jmetz en utilisant J'ai trouvé que je pouvais envelopper une fonction à l'aide d'une combinaison du dans mon exemple d'exemple, je voulais (temporairement) envelopper la fonction Voir aussi: Comment utiliser Matlab Toolbox Fonction qui a le même nom d'une fonction définie par l'utilisateur p> p> intégré () code> quand il peut être appliqué, car il est propre et au point. Malheureusement, de nombreuses fonctions ne sont pas trouvées par
intégré () code>.
qui -tall code> et < Code> CD CODE> Commandes. Je soupçonne que cette approche peut être adaptée à une grande variété d'applications. P>
Interp1 code> pour que je puisse vérifier pour vérifier Valeurs de sortie nan. (La fonction
INTERP1 CODE> sera par défaut, renvoyer une NAN dans certaines conditions, telles que si un point de requête est plus grand que le plus grand point d'échantillon.) Voici ce que j'ai proposé: P> < pré> xxx pré>
Je suis d'accord sur la réponse que vous avez postée sur l'autre question (