Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Using implicit information about row indices

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68321] Re: [mg68254] Using implicit information about row indices
  • From: János <janos.lobb at yale.edu>
  • Date: Tue, 1 Aug 2006 06:59:50 -0400 (EDT)
  • References: <200607310745.DAA26729@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On Jul 31, 2006, at 3:45 AM, Diamond, Mark wrote:

> I am wanting to fill a square matrix M (say, r by r)  using  
> information from
> a list, L.
>  The list L is also of length r, but is not a square matrix. It  
> contains
> lists of ordered pairs {col, num}
> It typically looks something like this; I have arranged it into  
> rows so that
> it is more obvious
> {
>   {{1, a}, {2, b}},
>
>   {{1, c}, {2, d}, {3, e}, {4, f}},
>
>  {{2, g}, {3, h}, {4, i}},
>
>  {{3, k}, {4, l}, {5,m}},
>
>  {{4, n}, {5, p}}
>
> }
>
> Now what I am trying to do is, for example, set M[[1,1]]=a, M[[1,2]] 
> =b,
> M[[2,1]]=c, M[[2.2]]=d, M[[2,3]]=e and so forth, and leave (or set)  
> all the
> other entries in M to zero. The row information for M is implicit  
> in the
> structure of the list L; additionally, the column indices as they  
> appear
> within sublist of L are guraranteed to be sequential. It seems with  
> all this
> info, there should be an easy way to fill M correctly, but I have  
> struggled
> without success to do anything other than an iterative process with  
> Do[]. I
> would appreciate any guidance you might have.
>
> Thank you.
>
> Mark Diamond
>
>
>

Here is a newbie approach:

In[9]:=
lst = {{{1, a}, {2, b}},
    {{1, c}, {2, d}, {3, e},
     {4, f}}, {{2, g}, {3, h},
     {4, i}}, {{3, k}, {4, l},
     {5, m}}, {{4, n}, {5, p}}}

In[23]:=
Normal[SparseArray[
    Flatten[
     (Table[Flatten[
          {Flatten[Position[
           lst, #1]], #1[[ii,
           1]]}] -> #1[[ii,
          2]], {ii, 1,
         Length[#1]}] & ) /@
      lst]]]
Out[23]=
{{a, b, 0, 0, 0}, {c, d, e,
    f, 0}, {0, g, h, i, 0},
   {0, 0, k, l, m},
   {0, 0, 0, n, p}}

János



----------------------------------------------
Trying to argue with a politician is like lifting up the head of a  
corpse.
(S. Lem: His Master Voice)


  • Prev by Date: Re: Problem solving a difference equation
  • Next by Date: Re: Using implicit information about row indices
  • Previous by thread: Re: Using implicit information about row indices
  • Next by thread: Re: Re: Using implicit information about row indices