Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

transform Matrix and List elements toreplacement Rules

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113968] transform Matrix and List elements toreplacement Rules
  • From: leigh pascoe <leigh at evry.inserm.fr>
  • Date: Fri, 19 Nov 2010 05:11:46 -0500 (EST)

I have a matrix that looks like this:
matrix=
{{1, 110, 120, 22, 64, 26, 24, 36, 390, 360, 1152},
  {4, 21, 16, 30,  47, 23, 124, 127, 397, 367, 1152},
  {2, 100, 103, 44, 71, 26, 81, 60,   302, 365, 1152},
{3, 110, 165, 13, 55, 37, 27, 23, 363, 359, 1152}}

I would like to sort it by the first element, delete the first and the 
last 3 columns and transform the remaining values  to Rules to give:

{{a -> 110, b -> 120, c -> 22, d -> 64, e -> 26, f -> 24, g -> 36},
  {a -> 100, b -> 103, c -> 44, d -> 71, e -> 26, f -> 81, g -> 60},
  {a -> 110, b -> 165, c -> 13, d -> 55, e -> 37, f -> 27, g -> 23},
  {a -> 21, b -> 16, c -> 30, d -> 47, e -> 23, f -> 124, g -> 127}}

The idea is to then evaluate a formula using these sets of substitutions 
for a,b,..g. The actual matrix is of course larger than this one.

There is no problem to sort and take the relevant parts

sorted=Sort[matrix, #2[[1]] >= #1[[1]] &]
data=sorted[[1;;4,2;;8]]

However I can't find a way to transform the resulting List elements to 
replacement rules.

I have tried creating a matrix with just the LHS of the rules:

rules= Table["{a->,b->,c->,d->,e->,f->,g->}", {4}];

and then to StringJoin the elements of matrix and rules. However I can't 
get this to work.

I also tried generating the elements of the replacement matrix in a Perl 
program and importing it into Mathematica. This seemed to give the 
correct matrix, however it wouldn't actually work for the substitutions. 
It took me some time to realise that the matrix was in fact:

data//FullForm

List[List["a->110", "b->120", "c->22", "d->64", "e->26", "f->24",  
"g->36"],
  List["a->0", "b->0", "c->0", "d->0", "e->2", "f->33", "g->63"],
  List["a->0", "b->0", "c->2", "d->12", "e->5", "f->77", "g->86"],
  List["a->113", "b->110", "c->27", "d->62", "e->18", "f->34",  "g->39"]]

i.e. there are unwanted parentheses (that are not evident when FullForm 
is not specified). Can anyone help me to get the form that I want? Thanks.

LP







  • Prev by Date: Mathematica 8 and Alpha integration....
  • Next by Date: CUDA Support Issues on Current Laptops
  • Previous by thread: Re: Mathematica 8 and Alpha integration....
  • Next by thread: Re: transform Matrix and List elements toreplacement Rules