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

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

Search the Archive

Re: Re: Further information about size limits for Normal[SparseArray[<>]]?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg49641] Re: [mg49616] Re: Further information about size limits for Normal[SparseArray[<>]]?
  • From: Scott Morrison <scott at math.berkeley.edu>
  • Date: Sun, 25 Jul 2004 02:55:53 -0400 (EDT)
  • References: <cdqr0s$kop$1@smc.vnet.net> <200407240748.DAA05940@smc.vnet.net>
  • Reply-to: scott at math.berkeley.edu
  • Sender: owner-wri-mathgroup at wolfram.com

> Most of the basic operations have been extended to handle SparseArray
> objects, so, for example, there is no need to add any fixes to
> LinearAlgebra`MatrixManipulation` to make it compatible with
> SparseArray, because those fixes have already been made to the basic
> Mathematica functions like Part. However, there are a few exceptions:
> in some cases a function has to do the parsing of the input expression
> and forgets about SparseArray; for example:

There are more problems, specifically with MatrixManipulation, where 
just making changes to the basic functions like Part wasn't enough. For 
example:

In[1]:=
<<LinearAlgebra`MatrixManipulation`

In[2]:=
m={{1,2,3},{4,5,6},{7,8,9}};

In[3]:=
sa=SparseArray[m];

In[4]:=
BlockMatrix[Outer[Times,m,m]]

Out[4]=
{{1,2,3,2,4,6,3,6,9},{4,5,6,8,10,12,12,15,
   18},{7,8,9,14,16,18,21,24,27},{4,8,12,5,10,15,6,12,18},{16,
     20,24,20,25,30,24,30,36},{28,32,36,35,40,45,42,48,54},{7,14,21,8,16,
   24,9,18,27},{28,35,42,32,40,48,36,45,54},{49,56,63,56,64,72,63,72,81}}

In[5]:=
BlockMatrix[Outer[Times,sa,sa]]

Out[5]=
{SparseArray[<9>,{9}],SparseArray[<9>,{9}],SparseArray[<9>,{9}],
	SparseArray[<9>,{9}],SparseArray[<9>,{9}],SparseArray[<9>,{9}],
	SparseArray[<9>,{9}],SparseArray[<9>,{9}],SparseArray[<9>,{9}]}

In[6]:=
SubMatrix[sa,{1,1},{2,2}]

Out[6]=
SubMatrix[SparseArray[<9>,{3,3}],{1,1},{2,2}]

Here BlockMatrix gives the answer in a peculiar form; a list of 
SparseArrays, each representing one row of the answer. This is not 
ideal, as it's an extremely inefficient representation, worse even than 
as a nested list.

SubMatrix failed simply because it's defined expecting a _List as it's 
argument, rather than a _?MatrixQ. These are both easy problems to fix, 
but I'd hope Wolfram could release a new MatrixManipulations package 
with it all done for us. :-) There are plenty more similar examples.

Scott Morrison


  • Prev by Date: Re: In Plot, horizontal range is reduced depending on PlotRange
  • Next by Date: Re: Spacing of Words in Text Graphics Statements
  • Previous by thread: Re: Further information about size limits for Normal[SparseArray[<>]]?
  • Next by thread: A question on finite field package performance