Locate functions and files

collapse all in page

## Syntax

`which item`

`which fun1 in fun2`

`which ___ -all`

`str = which(item)`

`str = which(fun1,'in',fun2)`

`str = which(___,'-all')`

## Description

example

`which item`

displays the full path for `item`

.

If

`item`

is a MATLAB^{®}function in a MATLAB code file (`.m`

,`.mlx`

, or`.p`

extension), or a saved Simulink^{®}model (`.slx`

or`.mdl`

extension), then`which`

displays the full path for the corresponding file.`item`

must be on the MATLAB path.If

`item`

is a method in a loaded Java^{®}class, then`which`

displays the namespace, class, and method name for that method.If

`item`

is a workspace variable,then`which`

displays a message identifying`item`

asa variable.If

`item`

is an unsaved Simulink model that is loaded in Simulink, then`which`

displays a message identifying`item`

as a new Simulink model.If

`item`

is a file name includingthe extension, and it is in the current working folder or on the MATLAB path,then`which`

displays the full path of`item`

.

If `item`

is an overloaded function or method,then `which`

`item`

returns onlythe path of the first function or method found.

example

`which fun1 in fun2`

displaysthe path to function `fun1`

that is called by file `fun2`

.Use this syntax to determine whether a local function is being calledinstead of a function on the path. This syntax does not locate nestedfunctions.

example

`which ___ -all`

displays the paths to all items on the MATLAB path with the requested name, as well as any files in special folders that have been implicitly added to the path. Such items include methods of instantiated classes. For more information about these special folders, see What Is the MATLAB Search Path. You can use `-all`

with the input arguments of any of the previous syntaxes.

example

`str = which(item)`

returnsthe full path for `item`

to `str`

.

example

`str = which(fun1,'in',fun2)`

returnsthe path to function `fun1`

that is called by file `fun2`

.Use this syntax to determine whether a local function is being calledinstead of a function on the path. This syntax does not locate nestedfunctions.

example

`str = which(___,'-all')`

returnsthe results of `which`

to `str`

.You can use this syntax with any of the input arguments in the previoussyntax group.

## Examples

collapse all

### Locate MATLAB Function

Locate the `pinv`

function.

matlabroot\toolbox\matlab\matfun\pinv.m

`pinv`

is in the `matfun`

folderof MATLAB.

You also can use function syntax to return the path to `str`

.When using the function form of `which`

, encloseall input arguments in single quotes.

`str = which('pinv');`

### Locate Method in a Loaded Java Class

Open Live Script

Create an instance of the Java® class. This loads the class into MATLAB®.

myDate = java.util.Date;

Locate the `setMonth`

method.

`which setMonth`

setMonth is a Java method % java.util.Date method

### Locate Private Function

Find the `orthog`

functionin a private folder.

`which private/orthog`

matlabroot\toolbox\matlab\elmat\private\orthog.m % Private to elmat

MATLAB displays the path for `orthog.m`

inthe `/private`

subfolder of `toolbox/matlab/elmat`

.

### Determine If Local Function Is Called

Determine which `parseargs`

functionis called by `area.m`

.

which parseargs in area

matlabroot\toolbox\matlab\specgraph\area.m (parseargs) % Local function of area

You also can use function syntax to return the path to `str`

.When using the function form of `which`

, encloseall input arguments in single quotes.

str = which('parseargs','in','area');

### Locate Function Invoked with Given Input Arguments

Suppose that you have a `matlab.io.MatFile`

object that corresponds to the example MAT-file `'topography.mat'`

:

`matObj = matfile('topography.mat');`

Display the path of the implementation of `who`

thatis invoked when called with the input argument `(matObj)`

.

`which who(matObj)`

matlabroot\toolbox\matlab\iofun\+matlab\+io\MatFile.m % matlab.io.MatFile method

Store the result to the variable `str`

.

`str = which('who(matObj)')`

str =matlabroot\toolbox\matlab\iofun\+matlab\+io\MatFile.m'

If you do not specify the input argument `(matObj)`

,then `which`

returns only the path of the first functionor method found.

`which who`

built-in (matlabroot\toolbox\matlab\general\who)

### Locate All Items with Given Name

Display the paths to all items on the MATLAB path with the name `openedFiles`

.

`which openedFiles`

built-in (matlabroot\toolbox\matlab\iofun\openedFiles)

### Return Path Names

Open Live Script

Return the results of `which`

to `str`

.

Find the `orthog`

function in a private folder. You must use the function form of `which`

, enclosing all arguments in parentheses and single quotes.

str = which('private/orthog','-all');whos str

Name Size Bytes Class Attributes str 1x1 314 cell

## Input Arguments

collapse all

`item`

— Function or file to locate

character vector | string scalar

Function or file to locate, specified as a character vector or string scalar. When using the function form of `which`

, enclose all `item`

inputs in single or double quotes. `item`

can be in one of the following forms.

Form of the `item` Input | Path to Display |
---|---|

| Display full path for To display the path for a file that has no file extension, type |

`/` | Limit the search to functions named |

`private/` | Limit the search to private functions named `fun` .For example, `which private/orthog` or `which('private/orthog')` displaysthe path for `orthog.m` in the `/private` subfolderof the parent folder. |

| Display the path to the implementation of function `fun` which would be invoked if called with the input arguments `a1,...,an` . Use this syntax to query overloaded functions. See the example, Locate Function Invoked with Given Input Arguments. |

**Data Types: **`char`

| `string`

`fun1`

— Function to locate

character vector | string scalar

Function to locate, specified as a character vector or string scalar. `fun1`

can be the name of a function, or it can be in the form `fun(a1,...,an)`

. For more information about the form, `fun(a1,...,an)`

, see Locate Function Invoked with Given Input Arguments.

When using the function form of `which`

, enclose all `fun1`

inputs in single or double quotes, for example, `which('myfun1','in','myfun2')`

.

**Data Types: **`char`

| `string`

`fun2`

— Calling file

character vector | string scalar

Calling file, specified as a character vector or string scalar. `fun2`

can be the name of a file, or it can be in the form `fun(a1,...,an)`

. For more information about the form, `fun(a1,...,an)`

, see Locate Function Invoked with Given Input Arguments.

When using the function form of `which`

, enclose all `fun2`

inputs in single or double quotes, for example, `which('myfun1','in','myfun2')`

.

**Data Types: **`char`

| `string`

## Output Arguments

collapse all

`str`

— Function or file location

character vector | cell array of character vectors

Function or file location, returned as a character vector or cell array of character vectors if you use `'-all'`

.

If

`item`

is a workspace variable, then`str`

is the character vector`'variable'`

.If

`str`

is a cell array of character vectors, then each row of`str`

identifies a result of`which`

. The results are ordered according to the Function Precedence Order. If there are shadowed results, you should not rely on the order of the shadowed functions and methods in`str`

. To determine if a result is shadowed, call`which`

without specifying`str`

.`which`

indicates shadowed results by the comment`% Shadowed`

.

## Limitations

When the class is not loaded,

`which`

only finds methods if they are defined in separate files in an @-folder and are not in any namespaces.

## Tips

For more information about how MATLAB uses scopeand precedence when calling a function, see Function Precedence Order.

## Extended Capabilities

### Thread-Based Environment

Run code in the background using MATLAB® `backgroundPool`

or accelerate code with Parallel Computing Toolbox™ `ThreadPool`

.

This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.

## Version History

**Introduced before R2006a**

## See Also

dir | doc | exist | lookfor | mfilename | path | type | what | who | fileparts

### Topics

- What Is the MATLAB Search Path?

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français

- United Kingdom (English)

Contact your local office