0

Is there a way to define functions inside of sections of a MATLAB file that you can call from the command window? I have three functions I want to define in a single .m file (each in its own section) but I don't see how I will be able to call them.

David Maust
  • 8,080
  • 3
  • 32
  • 36
Ryan
  • 7,621
  • 5
  • 18
  • 31
  • 2
    See also [How can I break up my Matlab code into functions without creating many files?](http://stackoverflow.com/q/18796978/2778484). – chappjc Feb 20 '14 at 20:59

3 Answers3

0

You can do one thing. Create folder myFuncitions and append plus sign in front of folder name like "+myFunctions" and move all your functions .m file in that folder. You can access functions: myFunction.Func1(), muFunctions.Func2(), and so on...

User1551892
  • 3,236
  • 8
  • 32
  • 52
0

Using class is your best bet. In class, you can define multiple methods (i.e. function) and call them independently of their order.

For example:

classdef Cat < handle
    properties
        meowCount = 0; 
    end

    methods 

        function obj = Cat()
            % all initializations, calls to base class, etc. here,
        end

        function Meow1(obj)
            disp('meowww'); 
            obj.meowCount = obj.meowCount + 1;
        end

        function Meow2(obj)
            disp('meowww meowww'); 
            obj.meowCount = obj.meowCount + 2;
        end
    end    
end

Demonstration:

>> C = Cat;
>> C.Meow1; 
meowww
>> C.meowCount
1
>> C.Meow2
meowww meowww
>> C.meowCount
3
m_power
  • 3,156
  • 5
  • 33
  • 54
0

Is it possible to define more than one function per file in MATLAB, and access them from outside that file? gives a good answer. Sample code to implement it is

function fHandle=temp(fnum)

switch fnum
  case 1, fHandle=@func1;
  case 2, fHandle=@func2;
  case 3, fHandle=@func3;
end
end

function y=func1(x)
y=x+1;
end

function y=func2(x)
y=x+2;
end

function y=func3(x)
y=x+3;
end

From the command line type

f1=temp(1);f2=temp(2);f3=temp(3);

then [f1(1) f2(1) f3(1)]

gives

ans = 2 3 4

Community
  • 1
  • 1
Joe Serrano
  • 424
  • 2
  • 7