Re: Multiply a constant to a matrix column
- To: mathgroup at smc.vnet.net
- Subject: [mg16356] Re: Multiply a constant to a matrix column
- From: dreiss at !SPAMscientificarts.com (David Reiss)
- Date: Thu, 11 Mar 1999 02:16:36 -0500
- Organization: EarthLink Network, Inc.
- References: <7bo0gg$dop@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <7bo0gg$dop at smc.vnet.net>, heahn at nanum.kaeri.re.kr (Hyo ahn) wrote:
> Hi,
>
> I would like to multiply a constant number to a certain column of an existing
> matrix in Mathematica and I am having a hard time.
>
> First, I have a 1000 x 3 matrix A. There is no command that allow me to
> multiply a constant number to a specific column (let say I want to multiply
> 100 to the second column), so I extract three columns
> separately using
>
> A1 = A[Range[1,1000],Range[1,1]];
> A2 = A[Range[1,1000],Range[2,2]];
> A3 = A[Range[1,1000],Range[3,3]];
>
> Then I multiply a constant to a extracted
> column which is a vector now. So I did
>
> A2b = 100 A2;
>
> Then I recombined the columns as
>
> A4 = ColumnJoin[A1,A2b,A3]
>
> but I found out that ColumnJoin command does not worked the way I expected
> it to be.
>
> Could anyone know a simple solution to this problem?
>
> Thanks.
>
> Hyo Ahn
> KAERI
One way to do this is to use MapAt along with Transpose.
First define a matrix:
In[1]:=
mat={{a,b,c},{d,e,f},{g,h,i}}
Out[1]=
{{a,b,c},{d,e,f},{g,h,i}}
If I want to multiply the constant "x" on the second row I would use
In[2]:=
MapAt[Times[x,#]&,mat,2]
Out[2]=
{{a,b,c},{d x,e x,f x},{g,h,i}}
To get at the columns of the matrix I first transpose
it and them transpose it back. Thus this multiplies
the second column by "x":
In[3]:=
Transpose[MapAt[Times[x,#]&,Transpose[mat],2]]
Out[3]=
{{a,b x,c},{d,e x,f},{g,h x,i}}
--David
--
----------------------------------------
Scientific Arts:
Creative Services and Consultation
for the Applied and Pure Sciences
http://www.scientificarts.com
David Reiss
Email: dreiss at !SPAMscientificarts.com
----------------------------------------
Remove the !SPAM to send email