Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

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.

0 Comments

karen

Products

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);
        end
        function odd = oddsamples(x)
                 odd = x(2:2:end);
        end
    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()

0 Comments

Wayne King
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.

0 Comments

Jan Simon

Contact us