M-function in a M-script
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
When I write M-scripts (It's a script, not an M-Function), sometimes I want to have a quick and dirty function, such as:
test1.m
a=1;
b=MyFunction(a)
Function y=MyFunction(x)
y=x/2;
end
But it is not allowed because "FUNCTION keyword is invalid heare". I have to create another M-file called MyFunction.m to define MyFunction.
Why is that? What is the rational behind it?
I know I can work this way:
test2.m
function test2
a=1;
b=MyFunction(a)
end
function y=MyFunction(x)
y=x/2;
end
Although no need to specify the argument for function test2, still, I have to add the first line for function test2, add an "end" for function test2. And worst of all, no easy access to base workspace data.
0 Commenti
Risposta accettata
Sean de Wolski
il 18 Mag 2011
That was covered in depth on CSSM.
4 Commenti
Walter Roberson
il 26 Lug 2015
Let me think: Fortran... C... C++... VBA... java 7 and earlier... Nope, none of those have functions as first class objects that can be defined almost anywhere.
Scripting is like leaving broken glass on the floor. If you know where it is and always remember to walk around it, it isn't going to be a problem.
Saying that functions with dozens of arguments are "as bad or worse" is like saying that if you provide people with pieces of metal and grindstones then that is worse than glass on the floor because some people might leave dangerous metal burrs on the things they shape.
I accidentally broke a bottle on my back walk yesterday. I swept it up, but I couldn't get at the slivers in some of the cracks, and it's pretty likely that my feet will discover a missed sliver at some point.
Sean de Wolski
il 29 Lug 2015
Modificato: Sean de Wolski
il 29 Lug 2015
Earl, starting in R2015a, you can publish a function within a script but you still can't run it.
Più risposte (1)
Bart
il 19 Dic 2016
I believe this is possible since version R2016b. See https://www.mathworks.com/help/matlab/matlab_prog/local-functions-in-scripts.html.
0 Commenti
Vedere anche
Categorie
Scopri di più su Startup and Shutdown in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!