[Date Index]
[Thread Index]
[Author Index]
Re: multiple outputs from a function
*To*: mathgroup at smc.vnet.net
*Subject*: [mg52768] Re: multiple outputs from a function
*From*: David Bailey <dave at Remove_Thisdbailey.co.uk>
*Date*: Mon, 13 Dec 2004 04:22:04 -0500 (EST)
*References*: <cpekeh$744$1@smc.vnet.net>
*Sender*: owner-wri-mathgroup at wolfram.com
Ben Barrowes wrote:
> I feel I must be missing something fundamental...
>
> How do you write a function (or ?) in Mathematica which produces more
> than one output?
>
> Let's say I have some data and I want a single function to calculate the
> mean, variance, std, etc, more than one thing and return those? I know
> that there are builtin functions for those parameters, but the point is
> I want to define functions with more than one output.
>
> The only examples I can find are along the lines of:
>
> f[x_,y_]:=x^2+y^2;
>
> which have only a single result.
>
> Is there a different structure altogether, such as a Subroutine, which
> allows multiple results from a single subunit?
>
> One thought I had was that because Mathematica treats everything as
> global unless defined specifically local (e.g. in a module), that
> variables used in a procedure would be accessible and would thus be a
> "result", but it seems scoping problems would arise if this was used too
> often. For example:
>
> In[67]:=
> t1[x_,y_]:=(a1=x^2+y;a2=x+y^2;x+y)
>
> In[68]:=
> t2=t1[5,6]
>
> Out[68]=
> 11
>
> In[69]:=
> a1
>
> Out[69]=
> 31
>
> In[70]:=
> a2
>
> Out[70]=
> 41
>
> Is this the accepted method for extracting multiple results from one
> function definition?
>
>
> Ben Barrowes
>
Hi,
It is sometimes useful to arrange for data to come back in global
variables, as you have done - although it would be best to use more
distinctive names to avoid confusion. In most situations it is best to
return a list of items, or a structure - using a head with no
definition. Thus, in your case you might return something like
myStatics[5.2,1.1]
where the first number is the mean and the other is the standard
deviation. Obviously, you can extend this to return as much information
as you like.
Regards,
David Bailey
dbaileyconsultancy.co.uk
Prev by Date:
**Re: Solve Feature?**
Next by Date:
**Graphics Conversion Bug with DensityGraphics**
Previous by thread:
**Re: multiple outputs from a function**
Next by thread:
**Re: Re: multiple outputs from a function**
| |