MathGroup Archive 2004

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

Search the Archive

Two speed challenges

  • To: mathgroup at
  • Subject: [mg47335] Two speed challenges
  • From: "Gareth J. Russell" <gjr2008 at>
  • Date: Tue, 6 Apr 2004 06:36:14 -0400 (EDT)
  • Organization: Columbia University
  • Sender: owner-wri-mathgroup at


I am creating a webMathematica application for calculating spatial autocorrelation using Moran's I. I am using randomization to test the significance of the I values, and so speed is of the essence.

I would appreciate any advice on the following two pieces of code, which are the rate-limiting factors and are as fast as I can make them. Can anyone do better?

Code 1

This simply randomizes a vector (in case it matters, typical input is a 500-element vector of Reals).

listRandomize = Compile[{{l, _Real, 1}}, Sort[Table[{Random[], l[[i]]}, {i, 1, Length[l]}]][[All, 2]]]

Code 2

This computes the only part of Moran's I that must change when the ordering of elements in the vector z changes. It calculates the sum over all i and j of z_i*z_j*w_ij, where w is (obviously) a square matrix

moranIPart1 = Compile[{{z, _Real, 1}, {w, _Real, 2}}, Apply[Plus, 
        Apply[Plus, Outer[Times, z, z]*w]]]

Thanks in advance!

Gareth Russell

Columbia University

  • Prev by Date: Re: webMathematica question
  • Next by Date: RE: Count
  • Previous by thread: Re: All combinations
  • Next by thread: Re: Two speed challenges