2013-09-28 3 views
0

Je suis en train de faire des triangles de Sierpinski avec récursion mais je reçois cette erreur:Matlab Erreur: « Fonction non définie ou méthode X pour les arguments d'entrée de type« double » avec Recursion

??? Undefined function or method 'sierpinski' for input arguments of type 'double'. 

Je comprends que ce a à voir avec Matlab ne trouvant pas le chemin pour ma fonction, mais la chose étrange est qu'il peut trouver ma principale fonction de sierpinski (x, y, n) mais pas la même fonction que j'essaye d'appeler plus tard pour obtenir la récursivité.

Mon code ressemble à ceci:

function sierpinski(x,y,n) 
... 
sierpinski(x2,y2,n-1) 
end 
sierpinski([0,1,0.5],[0,0,1],4) 

Je serais très reconnaissant si quelqu'un pouvait me aider :)

+0

pourriez-vous fournir un peu plus du code comme contexte? En outre, le message d'erreur que vous obtenez, il se produit lorsque vous invoquez la fonction à partir de la fenêtre de commande, ou est-il lancé comme une erreur dans le code 'sierpinski'? – Alan

+0

Votre répertoire dans lequel cette fonction est présente est-il ajouté au chemin? – user1343318

+0

'fonction de Sierpinski (x, y, n) prise sur si n == 0 remplissage (x, y, 'r') d'autre x2 = [(x (2) -X (1))/2, (x (2) -x (3))/2, x (3) + (x (2) -x (3))/2]; y2 = [y (1), y (3)/2, y (3)/2]; Sierpinski (x2, y2, n-1) fin fin Sierpinski ([0,1,0.5], [0,0,1], 2) ' Mon code n'est pas encore prêt donc je sais que je Je ne vais probablement pas obtenir de triangles Sierpinski en utilisant le code que j'ai jusqu'ici. Quoi qu'il en soit, je veux sortir quelque chose au lieu d'erreurs. – Djamillah

Répondre

1

Je ne peux pas reproduire la première erreur que vous déclarez. Cela a probablement à voir avec le fait que le fichier n'est pas sur le chemin. Le moyen le plus simple d'éviter cela est de remplacer le répertoire de travail par le répertoire contenant le fichier .m.

La deuxième erreur que vous décrivez dans votre commentaire est dû au fait que vous essayez d'avoir un fichier qui est une fonction Matlab et un script Matlab en même temps. Les deux ont l'extension .m, mais la première contient une définition de fonction (quelque chose qui peut être appelé avec des arguments, a des variables locales et peut renvoyer des valeurs), et l'autre contient une série d'instructions matlab qui doivent être exécutées exactement comme si ils ont été entrés un par un dans la fenêtre de commande.

Effectuez les opérations suivantes:

- Faire un fichier de fonction Matlab sierpinski.m qui ne comprend que votre code de fonction:

function sierpinski(x,y,n) 
hold on 
if n == 0 
    fill(x,y,'r') 
else 
    x2 = [(x(2)-x(1))/2, (x(2)-x(3))/2, x(3)+(x(2)-x(3))/2]; 
    y2 = [y(1), y(3)/2, y(3)/2]; 
    sierpinski(x2, y2, n-1) 
end 

Enregistrez le fichier dans le répertoire courant ou un répertoire sur le chemin.

- Dans la fenêtre de commande, entrez l'instruction sierpinski([0,1,0.5],[0,0,1],2). Le résultat est une fenêtre de chiffres avec un triangle rouge asymétrique. Pas un triangle Sierpinski, mais je suppose que la première étape est terminée. ;-)

Au lieu d'entrer cette instruction dans la fenêtre de commande, vous pouvez également créer un fichier de script Matlab. Modifiez un fichier avec le nom, par exemple. run_sierpinski.m, qui contient la déclaration:

sierpinski([0,1,0.5],[0,0,1],2) 

Encore une fois, enregistrez le fichier dans le répertoire en cours ou un répertoire sur le chemin.

Maintenant, vous pouvez exécuter le script, soit en cliquant sur le bouton "Exécuter" dans l'interface graphique (triangle vert ou similaire), ou en entrant run_sierpinski dans la fenêtre de commande. D'une manière ou d'une autre, le résultat devrait être le même que d'entrer l'énoncé directement.

Questions connexes