File Exchange Pick of the Week

Our best user submissions

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Function Handle Constructor 1

Posted by Jiro Doke,

Jiro‘s pick this week is function_handle constructor by Rody Oldenhuis.

When I first started programming in MATLAB, I would create my MATLAB files (scripts, functions) in my current folder. Everything is there, so I had no issues calling my scripts and functions. As I started working on multiple projects, I would create a new working folder and put everything there. After a while, I would have these similar functions that I constantly reuse. That was around the time I learned about the path. I can put all of my utility functions in a particular folder and add that folder to my search path. Later on, I learned about other ways of organizing my code, like private functions. When I learned about object oriented programming, I discovered the existence of packages.

Once in a while, I have these situations where I need to call a function that lives in some other folder, but that folder is not on the path. I just need it for that particular task, and I don’t want to add it to the path just for that task. There is a handy function called run, which allows you to call any script that exist elsewhere, but it doesn’t work for functions. This is where function_handle by Rody comes into play.

For example, there was a blog post I did a few years ago where I highlighted an entry that converted numbers to English names. The function isn’t on my path, but let me show you how it works. First, I’ll create a function handle for that function. Normally, you just use the @ symbol to create a function handle. But for a function that is not on the path, it becomes a bit tricky. Here, I’ll use Rody’s function_handle.

fcn = function_handle('..\2015_01_09_Num2Words\num2words\num2words.m')
fcn =
  function_handle with value:

Now I can just call num2words using the function handle.

ans =
    'one thousand and twenty-four'


Give it a try and let us know what you think here or leave a comment for Rody.

Get the MATLAB code

Published with MATLAB® R2018a


Comments are closed.

1 CommentsOldest to Newest