“Il n'y a pas de méthode” erreur générée lors de l'appel d'une fonction nouvelle à l'aide de la classe de l'objet défini par
J'ai défini une classe appelée "FilterCriteria" qui a un tas de fonction .m fichiers (getAMask, getBMask, etc.) associé avec elle. Lorsque je crée le FilterCriteria objet et appeler les fonctions de l'utiliser, je n'ai pas de problèmes. Toutefois, récemment, j'ai ajouté une autre fonction (qui, sur une note de côté, est presque identique à une autre fonction qui fonctionne toujours), et Matlab renvoie le message d'erreur "il n'y a Pas une méthode, une propriété, ou d'un champ getHMask pour la classe FilterCriteria."
J'ai cherché en ligne pour ce problème, mais je ne peux pas trouver quoi que ce soit. Le fichier getHMask.m est certainement dans le bon dossier, donc je ne comprends pas pourquoi Matlab semble avoir un problème à la trouver.
Voici getHMask.m de l'en-tête:
function mask = getHMask(object, quadrant, channel)
Toute aide serait grandement appréciée. Merci à l'avance.
OriginalL'auteur Nicole Ouellette | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
1) Une erreur que je fais parfois, n'est pas d'enregistrer le fichier avec le nom correct. Assurez-vous que les majuscules sont dans les bons endroits, etc!
2) une Autre couche de vérification d'erreur ici... Vous pouvez l'appeler
methods('object here')
(voir ici) et assurez-vous que les listes de la méthode (fonction) que vous voulez ajouter à elle. Si elle n'apparaît pas ici, vous devez vérifier dans la mise en œuvre de la méthode et assurez-vous qu'elle est correctement ajouté à la classe que vous utilisez pour votre objet.Upvote pour la première erreur! 🙂 (venu ici à la recherche pour le même problème et l'erreur que j'ai fait a été de donner de faux noms!)
OriginalL'auteur Ben A.
J'ai eu le même problème qui est suggéré par Ben balle #2 et a me rend fou. S'avère MatLab n'était pas le chargement de la dernière version de ma classe m-fichier. J'ai vaguement le souvenir m'a donné un avertissement plus tôt à ce sujet, car il y avait des anciennes instances de la classe dans l'espace de travail et à garder à partir de l'invalidation d'eux, il a dit qu'il ne serait pas de mise à jour de la classe jusqu'à ce que j'ai vidé l'espace de travail...
Donc si c'est ça le problème, le redémarrage de MatLab au travail, ou vous pouvez simplement entrer
>> clear
Antonio, le problème est que si vous redéfinissez une classe (par exemple, d'ajouter ou de retirer un bien de ça), les objets existants qui ont été créés par l'ancienne version de la classe en conflit avec la nouvelle version de la classe. Vous devez avoir un moyen de chirurgicalement recréer seulement les objets affectés à l'aide de la nouvelle classe si vous avez voulu éviter la suppression de la totalité de l'espace de travail.
Je n'ai qu'un objet (attribué à une seule variable) utilisé pour tester la classe: un nouveau istance de la classe est affectée à cette variable pour chaque mise à jour de la classe. Il n'y a pas de "vieux" objets, juste un qui devrait théoriquement être créé et initialisé à chaque fois que je lance ce code spécifique. Franchement, je ne comprends pas pourquoi il ne fonctionne pas. De compensation de la variable de référence à cet objet ne fonctionne pas. Le seul moyen que j'ai trouvé est de délivrer un
clear
de commande avec le nom de la classe: le problème semble être lié à un dépassées "compilé" classe et de ne pas les objets périmés.intéressant, peut-être que la question mérite sa propre question sur AFIN de le porter à l'attention de celui qui, dans la communauté connaissez peut-être une alternative à l'émission
clear
.Essayez
clear classes
, qui doit effacer le cache pour les classes sans compensation des variables afin de réimporter les définitions de classe. mathworks.com/matlabcentral/answers/...OriginalL'auteur tokamak