       Re: Trying to use ReplacePart

• To: mathgroup at smc.vnet.net
• Subject: [mg119970] Re: Trying to use ReplacePart
• From: Heike Gramberg <heike.gramberg at gmail.com>
• Date: Sat, 2 Jul 2011 05:02:10 -0400 (EDT)
• References: <201107010040.UAA24254@smc.vnet.net>

```I don't know if this is more natural, but it does seem to produce the same matrix as your code
without the need to initialise matrix first and with a (in my opinion) more transparent way to select
the elements from matrix1

nNum = 3;
nQnum = 2;

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

matrix1 = RandomInteger[{1, 10}, {2^nNum, 2^nNum}]

list2 = Flatten[Table[(2 j - 1) cNum + i, {j, cQnum/cNum}, {i, cNum}], 1];
matrix = matrix1[[list2, list2]]

Heike.

On 1 Jul 2011, at 01:40, Iv=E1n Lazaro wrote:

> Hi!
>
> 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}];
>

```

• Prev by Date: Re: Help with old Mathematica file
• Next by Date: Re: Why does Solve give me no solutions for this in Version 8.0.1?
• Previous by thread: Re: Trying to use ReplacePart
• Next by thread: Re: Trying to use ReplacePart