File: functions_anonymous.html

package info (click to toggle)
freemat 4.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 141,800 kB
  • ctags: 14,082
  • sloc: ansic: 126,788; cpp: 62,046; python: 2,080; perl: 1,255; sh: 1,146; yacc: 1,019; lex: 239; makefile: 100
file content (110 lines) | stat: -rw-r--r-- 5,000 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FreeMat: ANONYMOUS Anonymous Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">FreeMat
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('functions_anonymous.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">ANONYMOUS Anonymous Functions </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_functions.html">Functions and Scripts</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>Anonymous functions are simple, nameless functions that can be defined anywhere (in a script, function, or at the prompt). They are intended to supplant <code>inline</code> functions. The syntax for an anonymous function is simple: </p>
<pre class="fragment">   y = @(arg1,arg2,...,argn) expression
</pre><p> where <code>arg1,arg2,...,argn</code> is a list of valid identifiers that define the arguments to the function, and <code>expression</code> is the expression to compute in the function. The returned value <code>y</code> is a function handle for the anonymous function that can then be used to evaluate the expression. Note that <code>y</code> will capture the value of variables that are not indicated in the argument list from the current scope or workspace at the time it is defined. So, for example, consider the simple anonymous function definition </p>
<pre class="fragment">   y = @(x) a*(x+b)
</pre><p> In order for this definition to work, the variables <code>a</code> and <code>b</code> need to be defined in the current workspace. Whatever value they have is captured in the function handle <code>y</code>. To change the values of <code>a</code> and <code>b</code> in the anonymous function, you must recreate the handle using another call. See the examples section for more information. In order to use the anonymous function, you can use it just like any other function handle. For example, </p>
<pre class="fragment">   p = y(3)
   p = y()
   p = feval(y,3)
</pre><p> are all examples of using the <code>y</code> anonymous function to perform a calculation. </p>
<h1><a class="anchor" id="Examples"></a>
Examples</h1>
<p>Here are some examples of using an anonymous function</p>
<pre class="fragment">--&gt; a = 2; b = 4;    % define a and b (slope and intercept)
--&gt; y = @(x) a*x+b   % create the anonymous function

y = 
 @(x)   a*x+b   % create the anonymous function
--&gt; y(2)             % evaluate it for x = 2

ans = 
 8 

--&gt; a = 5; b = 7;    % change a and b
--&gt; y(2)             % the value did not change!  because a=2,b=4 are captured in y

ans = 
 8 

--&gt; y = @(x) a*x+b   % recreate the function

y = 
 @(x)   a*x+b   % recreate the function
--&gt; y(2)             % now the new values are used

ans = 
 17 
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_functions.html">Functions and Scripts</a></li>
    <li class="footer">Generated on Thu Jul 25 2013 18:58:17 for FreeMat by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
  </ul>
</div>
</body>
</html>