Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #3439

Re: Trying to use ReplacePart

From Bill Rowe <readnews@sbcglobal.net>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: Trying to use ReplacePart
Date 2011-07-01 08:54 +0000
Organization Steven M. Christensen and Associates, Inc and MathTensor, Inc.
Message-ID <iuk1vm$rpe$1@smc.vnet.net> (permalink)

Show all headers | View raw


On 6/30/11 at 8:40 PM, gaminster@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[[#[[1]], #[[2]]]] =
>matrix1[[
>cNum*Position[list1, #[[1]]][[1, 1]] + #[[1]], cNum*Position[list1,
>#[[2]]][[1, 1]] + #[[2]]]]) & /@ 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[3]:= rcList = Flatten@Partition[Range[3, 8], 2, 4]

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

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

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

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

Out[9]= {{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]}}

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread


Thread

Re: Trying to use ReplacePart Bill Rowe <readnews@sbcglobal.net> - 2011-07-01 08:54 +0000

csiph-web