Function definition in a script
Python
Filename: the_amazing_file.py
def returnTrue():
return True
print(returnTrue())
Here you define the function first, then call it. It's like how you do math with paper. You write down the formula, then you apply it.
Matlab
So the language for math, the function should be defined first right?
Yeah no.
Filename: the_amazing_file.m
disp(returnTrue());
function y = returnTrue()
y = true;
end
Seriously matlab, are you for math?
Calling non-parameter function
Let say you have a function foo()
which doesn't have parameters
bar = foo()
bar = foo
% Both are equivalent.
But foo()
and foo
mean two different things. foo()
means calling a function. foo
means "I'm a variable". If you use Python, it's passing functions as an argument. If you use C, it's function pointer.
Passing functions as argument vs Defining anonymous functions
Alright how to pass function as an argument in matlab? You use @
I copied this example from matlab function doc
% Compute the value of the integrand at 2*pi/3.
x = 2*pi/3;
y = myIntegrand(x)
% Compute the area under the curve from 0 to pi.
xmin = 0;
xmax = pi;
f = @myIntegrand;
a = integral(f,xmin,xmax)
function y = myIntegrand(x)
y = sin(x).^3;
end
Guess what else use @
? Anonymous functions
sqr = @(x) x.^2;
If you look at the way anonymous function is defined and look at how non-parameter function (previous section), you may ask the following line
bar = foo;
could mean anything right? Yeah it could mean:
- calling a function without parameters
- assigning anonymous function to different variable.
The more confusing, the more we analyse.
Now you may argue, "I know my functions". Yeah but can you remember other people functions when reading a long file while trying to understand what it does? Can you?
Top comments (0)