Documentation

### This is machine translation

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

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

# str2func

Construct function handle from character vector

## Syntax

``fh = str2func(str)``

## Description

example

````fh = str2func(str)` constructs a function handle, `fh`, from a function name or text representation of an anonymous function.Function handles created using `str2func` do not have access to variables outside of their local workspace or to nested functions. If your function handle contains these variables or functions, MATLAB® throws an error when you invoke the handle. Also, if you use a text representation of an anonymous function, the resulting function handle does not have access to private or local functions.```

## Examples

collapse all

Convert the character vector `'ones'` to a function handle, and call the `ones` function using the handle.

```c = 'ones'; fh = str2func(c)```
```fh = function_handle with value: @ones ```
`fh(1,5)`
```ans = 1×5 1 1 1 1 1 ```

Convert a character vector that represents an anonymous function to a function handle. Workspace variables are not available to the `str2func` function. Therefore, include values in the character vector that are necessary to evaluate the expression and that are not defined as function inputs.

Define a character vector that represents the anonymous function 7x – 13. Convert the character vector to a function handle.

```str = '@(x)7*x-13'; fh = str2func(str)```
```fh = @(x)7*x-13```

Call the anonymous function using the handle.

`fh(3)`
```ans = 8```

If you include workspace variables in your character vector, `str2func` creates the function handle, but MATLAB throws an error when you invoke the function handle.

```a = 13; str = '@(x)7*x-a'; fh = str2func(str); fh(3)```
```Undefined function or variable 'a'. Error in @(x)7*x-a```

Create a function that returns two function handles used to simulate the roll of dice. The first die (`d1`) returns a number from 1 through 6, but the second die (`d2`) always returns the number 1.

Create the following function in a folder on your MATLAB path. When `str2func` is used with a character vector representing an anonymous function, it does not have access to the local function. Therefore, MATLAB calls the built-in `randi` function, and returns a number from 1 through 6. The `eval` function does have access to the local function, so `d2` uses the overloaded `randi` and always returns 1.

```function [d1,d2] = diceRoll str = '@()randi([1 6],1)'; d1 = str2func(str); d2 = eval(str); end function r = randi(~,~) r = 1; end ```

At the command prompt, call the `diceRoll` function.

```[p1,p2] = diceRoll ```
```p1 = function_handle with value: @()randi([1,6],1) p2 = function_handle with value: @()randi([1,6],1) ```

Both `p1` and `p2` appear to be associated with the same anonymous function.

Invoke the function handles. The result from `p1` varies from 1 through 6. The result from `p2` is always 1.

```p1() p2() ```
```ans = 5 ans = 1 ```

## Input Arguments

collapse all

Text to convert to a function handle, specified as a function name or a character vector or string scalar representation of an anonymous function.

Example: `str = 'cos'`

Example: `str = '@(x) x.^2'`

## Tips

• A function handle that stores variable values does not retain its original value when you use `func2str` to convert it to a character vector, and then convert it back to a handle with `str2func`.