Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: help to make code run faster (mathematica v8.01)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121391] Re: help to make code run faster (mathematica v8.01)
  • From: kristoph <kristophs.post at web.de>
  • Date: Tue, 13 Sep 2011 07:21:03 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j4fhn1$2em$1@smc.vnet.net> <j4i6a7$c0a$1@smc.vnet.net>

On 11 Sep., 13:33, Ray Koopman <koop... at sfu.ca> wrote:
> On Sep 10, 4:29 am, kristoph <kristophs.p... at web.de> wrote:
>
>
>
>
>
>
>
>
>
> > Hi
>
> > I'm running out of options in order to make my code run faster. I do
> > appreciate any help. I programmed a function named tStat that
> > basically sums over two compiled functions. Although, I run the
> > function parallel it is still rather slow. Thanks in advance for help.
> > Here is what I mean:
>
> > (*the following 5 lines is just random input data to test the
> > function*)
>
> > resp=RandomReal[10,250];
> > reg=RandomReal[1,250];
> > des=DesignMatrix[Table[{reg[[i]],resp[[i]]},{i,1,Length[reg]}],x,x];
> > fit=LinearModelFit[{des,resp}];
> > h=1.06 StandardDeviation[reg] Length[reg]^(-1/5);
>
> > (*the two compiled functions which are inputs for the function tStat*)
>
> > epanKern=Compile[{u},
> > If[Abs[u]<1,3/4 (1-u^2),0]
> > ];
>
> > val1=Compile[{{rk,_Real},{rj,_Real},{dk,_Real},{dj,_Real},
> > {band,_Real}},
> > rk rj epanKern[(dk-dj)/band]];
>
> > (*the following function is rather slow*)
>
> > tStat[data_,band_,residuals_,leg_]:=Module[{k,j,res=0,var=0},
> > res=ParallelSum[val1[residuals[[k]],residuals[[j]],data[[k]],data[[j]=
],band ],
> > {k,1,leg},{j,k+1,leg}];
> > 2 res
> > ];
>
> > (*executing the function*)
> > tStat[reg,h,fit["FitResiduals"],Length[reg]]//AbsoluteTiming
>
> Think in terms of vectors:
>
> 1.5 Times @@ Transpose@Subsets[fit["FitResiduals"],{2}] .
>   Clip[1. - ((Subtract @@ Transpose@Subsets[reg,{2}])/h)^2, {0.,1.}]

I tried vectors but not as nice and inspiring as you proposed. Thank
you very much.




  • Prev by Date: Re: Texture in version 8, fine, but don't export...?
  • Next by Date: Re: How create new style sheet- Mathematica 8
  • Previous by thread: Re: help to make code run faster (mathematica v8.01)
  • Next by thread: Re: help to make code run faster (mathematica v8.01)