Re: InputStream in version 3 vs version 4
- To: mathgroup at smc.vnet.net
- Subject: [mg18794] Re: [mg18773] InputStream in version 3 vs version 4
- From: "Wolf, Hartmut" <hwolf at debis.com>
- Date: Thu, 22 Jul 1999 08:19:18 -0400
- Organization: debis Systemhaus
- References: <199907200533.BAA11600@smc.vnet.net.>
- Sender: owner-wri-mathgroup at wolfram.com
Dear Luci ELLIS, Luci schrieb: > --x---x---x-- > > Failing this, can anyone suggest a robust way to turn a list of functions > and a matrix of data into a matrix where the elements of each row are the > elements of the original matrix transformed by the corresponding function? > > That is: > functions= {f[#]&, g[#]&, h[#]&} > data = {{data[1,1],data[1,2],data[1,3]},{data[2,1],data[2,2],data[2,3}, > {data[3,1],data[3,2],data[3,3}, > {data[4,1],data[4,2],data[4,3]},{data[5,1],data[5,2],data[5,3}} > { > output= {f[data[1,1]], g[data[1,2]], h[data[1,3]]}, {f[data[2,1]], > g[data[2,2]], h[data[2,3]]}, {f[data[3,1]], g[data[3,2]], h[data[3,3]]}, > {f[data[4,1]], g[data[4,2]], h[data[4,3]]}, {f[data[5,1]], g[data[5,2]], > h[data[5,3]]}, > If we Map at level 0, we get our tool: In[1]:= Map[f,x,{0}] Out[1]= f[x] Operating on Lists of functions and arguments (generalisation of inner product) In[2]:= Inner[Map[#1,#2,{0}]&,{f,g,h},{1,2,3},List] Out[2]= {f[1],g[2],h[3]} So now we can Map that over your List (of argument records) In[3]:= funs={f,g,h}; In[4]:= data=Array[dd,{5,3}] Out[4]= {{dd[1,1],dd[1,2],dd[1,3]}, {dd[2,1],dd[2,2],dd[2,3]}, {dd[3,1],dd[3,2],dd[3,3]}, {dd[4,1],dd[4,2],dd[4,3]}, {dd[5,1],dd[5,2],dd[5,3]}} In[5]:= Inner[Map[#1,#2,{0}]&,funs,#,List]& /@ data Out[5]= {{f[dd[1,1]],g[dd[1,2]],h[dd[1,3]]}, {f[dd[2,1]],g[dd[2,2]],h[dd[2,3]]}, {f[dd[3,1]],g[dd[3,2]],h[dd[3,3]]}, {f[dd[4,1]],g[dd[4,2]],h[dd[4,3]]}, {f[dd[5,1]],g[dd[5,2]],h[dd[5,3]]}} For your case, you may conveniently define In[23]:= inapp[funs_]:=Inner[Map[#1,#2,{0}]&,funs,#,List]& and work with the expression In[24]:= inapp[funs]/@data Out[24]= {{f[dd[1,1]],g[dd[1,2]],h[dd[1,3]]}, {f[dd[2,1]],g[dd[2,2]],h[dd[2,3]]}, {f[dd[3,1]],g[dd[3,2]],h[dd[3,3]]}, {f[dd[4,1]],g[dd[4,2]],h[dd[4,3]]}, {f[dd[5,1]],g[dd[5,2]],h[dd[5,3]]}} kind regards, hw
- References:
- InputStream in version 3 vs version 4
- From: "ELLIS, Luci" <EllisL@rba.gov.au>
- InputStream in version 3 vs version 4