83 votes

Dans MATLAB, puis-je avoir un script et une définition de fonction dans le même fichier?

Supposons que j’ai une fonction f() et que je veuille l’utiliser dans my_file.m , qui est un script.

  1. Est-il possible de définir la fonction dans my_file.m ?
  2. Sinon, supposons que je le définis dans f.m . Comment puis-je l'appeler en my_file.m ?

J'ai lu la documentation en ligne, mais le meilleur moyen de le faire n'était pas clair.

49voto

gnovice Points 70970

Le seul type de fonction , vous pouvez définir à l'intérieur d'un script MATLAB est une fonction anonyme. Par exemple, vous pourriez avoir de la suite dans un fichier my_script.m:

data = 1:10;            %# A vector of data
f = @(x) x.^2;          %# An anonymous function
squaredData = f(data);  %# Invoke the anonymous function

Notez que les fonctions anonymes sont mieux adaptés pour des opérations simples, comme ils doivent être définies dans une seule expression. Pour les fonctions plus complexes, vous devez les définir dans leurs propres fichiers, de les placer quelque part sur le MATLAB chemin afin de les rendre accessibles à votre script, et ensuite appeler à partir de votre script comme vous le feriez pour toute autre fonction.

37voto

John Points 1978

La façon dont je contourne cette limitation est de transformer mes scripts en fonctions qui ne prennent aucun argument (si j'ai besoin de variables de l'espace de noms global, je les transmets explicitement à la fonction ou j'utilise "evalin" pour les récupérer).

Ensuite, vous pouvez définir toutes les fonctions supplémentaires dont vous avez besoin dans le "script". C'est un bidouillage, mais je l'ai trouvé assez puissant dans les cas où j'ai besoin de plusieurs fonctions non triviales.

19voto

Oneiros Points 929

Vous pouvez faire quelque chose comme ça (en supposant que votre fichier s'appelle my_file.m ):

 function my_file
   %script here
end

function out = f(in)
   %function here
end
 

Si vous cliquez sur le bouton Exécuter, la fonction my_file sera exécutée par défaut.

7voto

Rich C Points 1664

1) Vous ne pouvez pas imbriquer une fonction dans un script.

2) Assurez-vous que fm est sur votre chemin ou dans le répertoire en cours, et vous pouvez l’appeler comme n’importe quelle autre fonction.

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