Re: addressing matrix elements
- To: mathgroup at smc.vnet.net
- Subject: [mg3616] Re: [mg3566] addressing matrix elements
- From: penny at edu-suu-scf.sc.suu.edu (Des Penny)
- Date: Thu, 28 Mar 1996 00:11:18 -0500
- Sender: owner-wri-mathgroup at wolfram.com
>Say M is a matrix of integers. I want to func[M, k] to return a matrix >same dimensions as M, each entry consisting of the corresponding entry of >M taken modulo k. For instance, func[{{22,33}, {44,55}}, 10] should >return {{2,3}, {4,5}}. I would like this to work for arbitrary >rectangular integer matrices, but am not having much luck. It seems like >this should be easy, but I'm stumped. > >More generally, I would like to be able to apply a function f to each >element in a matrix of arbitrary size and dimensions, without worrying >about the particulars of the matrix representation via lists. I want >func[M, g] to return a matrix of the same size and shape as M, with >elements formed by applying g to corresponding elements of M. Is there >nice way to do this? Seems like some combination of Map, Apply, Thread, >SetAttributes Listable, Outer, etc. could do the job, but I am lost in the >morass of possibilites. Any help would be appreciated. > >Thanks, >David Cabana Hi David: Try the following for the general function: In[8]:= func[m_,g_]:= Map[g,m,{2}] m= {{a11,a12,a13},{a21,a22,a23}}; func[m,g] Out[8]= {{g[a11], g[a12], g[a13]}, {g[a21], g[a22], g[a23]}} We can now use this function for your particular case as follows: In[9]:= func[m,Mod[#,k]&] Out[9]= {{Mod[a11, k], Mod[a12, k], Mod[a13, k]}, {Mod[a21, k], Mod[a22, k], Mod[a23, k]}} In[11]:= func[{{22,33}, {44,55}},Mod[#,10]&] Out[11]= {{2, 3}, {4, 5}} If you want a function in the same format as you propose for Mod you could use: In[12]:= f[m_,k_] := Map[Mod[#,k]&,m,{2}] In[13]:= f[m,k] Out[13]= {{Mod[a11, k], Mod[a12, k], Mod[a13, k]}, {Mod[a21, k], Mod[a22, k], Mod[a23, k]}} In[14]:= f[{{22,33}, {44,55}},10] Out[14]= {{2, 3}, {4, 5}} Hope this helps. Cheers, Des Penny ========================== Des Penny Physical Science Dept. Southern Utah University Cedar City, UT 84720 VOICE: (Office): (801) 586-7708 (Home) : (801) 586-2286 FAX: (801) 865-8051 e-mail: penny at suu.edu ========================== ==== [MESSAGE SEPARATOR] ====