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

New to MATLAB?

How do you call a nested function?

Asked by karen

karen (view profile)

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

karen (view profile)

Products

No products are associated with this question.

2 Answers

Answer by Wayne King

Wayne King (view profile)

on 18 Jun 2013
Edited by Wayne King

Wayne King (view profile)

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

Wayne King (view profile)

Answer by Jan Simon

Jan Simon (view profile)

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

Jan Simon (view profile)

Contact us