Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*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 2005

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

Search the Archive

Re: Problem with substitutions in SparseArray?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56907] Re: [mg56824] Problem with substitutions in SparseArray?
  • From: arrigoni <arrigoni at itp.tu-graz.ac.at>
  • Date: Tue, 10 May 2005 03:42:09 -0400 (EDT)
  • References: <200505070816.EAA20188@smc.vnet.net> <6d5b1cedba1e6f5bbfe7eb5fd2f511bc@mimuw.edu.pl>
  • Sender: owner-wri-mathgroup at wolfram.com

Thank you very much for your answer

>
>
> (n = m /. HoldPattern[SparseArray[x__, {y__, {a}}]] :>
>    SparseArray[x, {y, {1}}])//InputForm
>

However, this is  not very general. If you have, for example

  mm=SparseArray[{i_,i_}->a,{2,2}]
(nn = mm /. HoldPattern[SparseArray[x__, {y__, {a}}]] :>    SparseArray[x, 
{y, {1}}])
Normal[nn]

RESULT:
{{a, 0}, {0, a}}


>
> n=SparseArray[ArrayRules[m]/.a->1]//InputForm
>
>
> SparseArray[Automatic, {1, 1}, 0, {1, {{0, 1}, {{1}}},
>  {1}}]
>

With this one must be even more careful: in this case the zeroes of the 
matrix have been removed and you are left with a 1x1 instead of a 2x2 
matrix



I tried it this way, i. e. by defining a special replacement

ReplaceSparse[ff_,rr_Rule] := (ff/.rr)/. HoldPattern[SparseArray[xx__]]:> 
SparseArray @@ ({xx}/.rr)


but I don't like it very much

EXAMPLES:
ReplaceSparse[mm,a->1] //Normal
ReplaceSparse[m,a->1] //Normal



one could even think to redefine ReplaceAll in this way

Enrico


  • Prev by Date: Re: meaning of a "*" in search string?
  • Next by Date: Re: ArcTan[1/0] no result, but ArcTan[Infinity] ok. How to resolve?
  • Previous by thread: Re: Problem with substitutions in SparseArray?
  • Next by thread: Re: Problem with substitutions in SparseArray?