How to do multiple functions or subroutines in one .m file

51 visualizaciones (últimos 30 días)
Collin Greenwell
Collin Greenwell el 25 de Ag. de 2021
Comentada: David Goodmanson el 19 de Jul. de 2022
I am working on a project for a class and the professor is requiring that we use functions for evaluating certain things (using the bisection and secant method), but he also requires that we only turn in a single .m file. Normally I would create the functions in seperate files and then call them in the main code, but he does not want this. He insists there is a way to do multiple "subroutines" (his phrasing, although I havent heard of that and when I look it up it seems to be the same thing as a function. The main problem is if I try and put a function into my main project code named project1.m it says that the function (bisect) is not the same as the file name, which is why I've always done them seperately. I have looked throughout these forums and the methods I've seen dont seem to make much sense. Ill put a shortened version of my code, as the guts of it don't matter since they run fine. Overall i need a way to have two funcitons or "subroutines" in one .m file and be able to call them. The main problem is having them in the same file and using them all in the same script.
function [p,i] = bisect(f,a,b,tol,n0)
% code for evaluating the function
end
[p,i] = bisect(f,a,b,tol,n0);
disp(p);
disp(i);
  1 comentario
Stephen23
Stephen23 el 25 de Ag. de 2021
Editada: Stephen23 el 25 de Ag. de 2021
"He insists there is a way to do multiple "subroutines" (his phrasing, although I havent heard of that and when I look it up it seems to be the same thing as a function."
They are called local functions:
"The main problem is if I try and put a function into my main project code named project1.m it says that the function (bisect) is not the same as the file name, which is why I've always done them seperately."
If you are defining functions in a script then all function definitions must occur after all script code.
This is explained in the MATLAB documentation:

Iniciar sesión para comentar.

Respuestas (1)

David Goodmanson
David Goodmanson el 25 de Ag. de 2021
Hi Collin
Here is a quick example. Functions must go at the very end of the script, and each function must have an 'end' statement at the end to delineate it from the next function.
r = 1;
s = 2;
u = 0:.01:6;
x = afun(r,u);
y = bfun(s,u);
figure(1)
plot(x,y)
grid on
function x = afun(r,u)
x = r*cos(u);
end
function y = bfun(s,u)
y = s*sin(u);
end
  2 comentarios
Warwick
Warwick el 17 de Jul. de 2022
This is by far the best answer to this question. I had the same question but the offical help and other user answers regarding local functions were, to me at least, ambiguous. thanks.
David Goodmanson
David Goodmanson el 19 de Jul. de 2022
Hi Warwick, thanks for your comment. Good to know that the answer was useful.

Iniciar sesión para comentar.

Categorías

Más información sobre Programming en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by