SparseArray and Compile
- To: mathgroup at smc.vnet.net
- Subject: [mg99722] SparseArray and Compile
- From: andreas.kohlmajer at gmx.de
- Date: Tue, 12 May 2009 03:09:11 -0400 (EDT)
Greetings, I have difficulties to speed up my calculation regarding SparseArray: Date[] rp = {}; AppendTo[rp, SparseArray[UnitStep[0.01 - dat - dat[[#]]]]] & /@ Range[Length[dat]]; Date[] dat is a list of Reals containing approx. 24000 elements. I had to use SparseArray for each line to prevent a memory crash; the final matrix has 574 million elements. The calculation takes 2' 43'' on my WinXP Dell workstation (DualCore @ 1.6 GHz, 3 GB RAM) I would like to speed up the calculation using compile, but the SparseArray object doesn't fit the tensor format. I have tried: Compile[{{data, _Real, 1}}, Block[{rp}, rp = {}; AppendTo[rp, SparseArray[UnitStep[0.01 - data - data[[#]]]]] & /@ Range[Length[data]]]] Compile::cpts: The result after evaluating Insert[rp,SparseArray [UnitStep[0.01-data-data[[System`Private`CompileSymbol[<<1>>] [[System`Private`CompileSymbol[<<1>>]]]]]]],-1] should be a tensor. Nontensor lists are not supported at present; evaluation will proceed with the uncompiled function. >> The calculation is used calculate a recurrence plot. The fixed value of 0.01 will be replaced by a variable later on; therefore, I need to speed up the calculation. Any help is appreciated.