MATLAB Answers


How do you call a nested function?

Asked by karen
on 18 Jun 2013

Hello. I understand how a nested function works, but I'm having a problem calling it in the command window. I don't know if I'm calling it wrong or not.



No products are associated with this question.

2 Answers

Answer by Wayne King
on 18 Jun 2013
Edited by Wayne King
on 18 Jun 2013
 Accepted answer

You want to put the nested function inside another function (as the term nested implies) and then call the top-level function. As an example, create the following file, evenodd.m

     function [even, odd] = evenodd(x)
     even = evensamples(x);
     odd = oddsamples(x);
        function even = evensamples(x)
                  even = x(1:2:end);
        function odd = oddsamples(x)
                 odd = x(2:2:end);

Save the above file evenodd.m in a folder on the MATLAB path and then call

 >> x = randn(16,1);
 >> [even,odd] = evenodd(x);

Note that evenodd() calls two nested functions evensamples() and oddsamples()


Answer by Jan Simon
on 18 Jun 2013

You cannot call a nested function from the outside, e.g. from the command line, directly. This is the nature of a nested function. Sub-functions cannot be called directly also.


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!