Loading Variables within a Function

If you define a function that loads data from a MAT-file, and find that MATLAB® does not return the expected results, check whether any variables in the MAT-file share the same name as a MATLAB function. Common variable names that conflict with function names include i, j, mode, char, size, and path.

For example, consider a MAT-file with variables height, width, and length. If you load these variables using a function such as findVolume,

function vol = findVolume(myfile)
  load(myfile);
  vol = height * width * length;

MATLAB interprets the reference to length as a call to the MATLAB length function, and returns an error:

Error using length
Not enough input arguments.

To avoid confusion, when defining your function, choose one (or more) of the following approaches:

  • Load into a structure array. For example, define the findVolume function as follows:

    function vol = findVolume(myfile)
      dims = load(myfile);
      vol = dims.height * dims.width * dims.length;
  • Explicitly include the names of variables in the call to the load function.

  • Initialize variables (e.g., assign to an empty matrix or empty string) within the function before calling load.

To determine whether a particular name is associated with a MATLAB function, use the exist function.

Was this topic helpful?