       Re: Trying to use ReplacePart

• To: mathgroup at smc.vnet.net
• Subject: [mg119958] Re: Trying to use ReplacePart
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Fri, 1 Jul 2011 04:50:37 -0400 (EDT)

```On 6/30/11 at 8:40 PM, gaminster at gmail.com (Iv=C3=A1n Lazaro) wrote:

>I needed some days ago to replace elements in a matrix. My first
>thought was to use ReplacePart, but I found myself trying to tell it
>to make all replacements at once, instead of returning multiple
>copies of the original matrix with only one element changed. As I
>was in a hurry, I solved the problem in a different way. However I'm
>still wondering how can I use a more "natural" code to solve this
>problem.

>nNum = 3; nQnum = 2;

>cNum = 2^(nNum - nQnum); cQnum = 2^(nNum - 1);

>list = Table[i, {i, 1, cQnum}]; list1 = Partition[list, cNum];
>matrix = ConstantArray[0, {cQnum, cQnum}]; matrix1 =
>RandomInteger[{1, 10}, {2^nNum, 2^nNum}]

>(matrix[[#[], #[]]] =
>matrix1[[
>cNum*Position[list1, #[]][[1, 1]] + #[], cNum*Position[list1,
>#[]][[1, 1]] + #[]]]) & /@ Tuples[{list, list}];

>or a faster solution,

>Table[matrix[[i, j]] =
>matrix1[[
>cNum*Position[list1, i][[1, 1]] + i, cNum*Position[list1, j][[1, 1]]
>+ j]], {i, 1, cQnum}, {j, 1,cQnum}];

Natural is not well defined. But simpler I can do. First, I can
generate a list of the rows/cols you appear to be after as follows:

In:= rcList = Flatten@Partition[Range[3, 8], 2, 4]

Out= {3,4,7,8}

with that I can create a 4 x 4 matrix with entries from the
larger matrix as follows:

In:= lgMatrix = Table[a[i, j], {i, 8}, {j, 8}];

In:= smMatrix = lgMatrix[[rcList, rcList]]

Out= {{a[3, 3], a[3, 4], a[3, 7], a[3, 8]}, {a[4, 3], a[4, 4],
a[4, 7], a[4, 8]}, {a[7, 3], a[7, 4], a[7, 7], a[7, 8]},
{a[8, 3], a[8, 4], a[8, 7], a[8, 8]}}

```

• Prev by Date: Re: Improt vs Get
• Next by Date: Re: Remote presentation clicker for mathematica slideshows.
• Previous by thread: Re: Improt vs Get
• Next by thread: Re: Trying to use ReplacePart