An easier functional way to divide each Column of matrix by a row vector, element-wise?

• To: mathgroup at smc.vnet.net
• Subject: [mg127069] An easier functional way to divide each Column of matrix by a row vector, element-wise?
• From: "Nasser M. Abbasi" <nma at 12000.org>
• Date: Thu, 28 Jun 2012 04:01:40 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

```I have a list like this 'mat' and 'v' like this

mat = { {a1,a2},{b1,b2} }
v   = {v1,v2}

I want to generate

mat={  {a1/v1,  a2/v2}, { b1/v1, b2/v2 } }

I can't just do  mat/v since this does

mat={  {a1/v1,  a2/v1}, { b1/v2, b2/v2 } }

I solved this 2 ways, but I am still not happy.
I think there should be an easier way.

method 1  (not too natural)
-------------------------------
Clear["Global`*"]
mat={{a1,a2},{b1,b2}};
v={v1,v2};
Transpose[Transpose[mat]/v]

Out[93]= { {a1/v1, a2/v2}, {b1/v1,  b2/v2} }

method 2 (too complicated)
---------------------------
In[94]:= MapIndexed[Divide[#1,v[[#2[[2]]]]]&,mat,{2}]

Out[94]= { {a1/v1, a2/v2}, {b1/v1, b2/v2}}

method 3 (using a Table, oh no !)
------------------------------------
In[96]:= Table[mat[[i,j]]/v[[j]],{i,2},{j,2}]

Out[96]= {{a1/v1, a2/v2} , {b1/v1, b2/v2} }

method 4 (a not good way to do it )
----------------------------------------
In[108]:= mat.v/.Plus->List/.Times->Divide

Out[108]= {{a1/v1, a2/v2}, {b1/v1, b2/v2}}

I looked at real Mathematical tricks using Inenr and Outer and
something like this, but I do see a way so far. (I also did not
have my morning coffee yet), so I wanted to ask if
someone can see one of those elegant super functional
correct ways to do this.

ps. fyi, in that other system (starts with O and ends with VE)
I can do this like this:

mat=[1 2;3 4]
v=[5 10]
bsxfun(@rdivide,mat,v)

0.20000   0.20000
0.60000   0.40000

thanks,
--Nasser

```

• Prev by Date: Re: Approximate Zero Times A Symbol
• Next by Date: Re: Replace, ReplaceAll and If time performace comparition
• Previous by thread: Re: Creating a PDF graphic with Mathematica
• Next by thread: Re: An easier functional way to divide each Column of matrix by a row vector, element-wise?